Skillnad mellan versioner av "Kap 3 Fortsättning med C Cpp (5)"

Från Mathonline
Hoppa till: navigering, sök
m
m
Rad 72: Rad 72:
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: fib.jpg]]</div>
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: fib.jpg]]</div>
  
<big>Funktionen <b><span style="color:red">fib()</span></b> anropar sig själv två gånger i sin egen definition: <b><span style="color:red">rekursiva anrop!</span></b>
+
<big>Funktionen <b><span style="color:red">fib()</span></b> anropas i huvudprogrammet FibonacciTest med vanligt funktionsanrop, inte rekursivt.
 
+
Anropet i huvudprogrammet däremot är ett vanligt (inte rekursivt) funktionsanrop.
+
 
</big>
 
</big>
 
</div>
 
</div>

Versionen från 7 januari 2024 kl. 18.57

        <<  Agenda          Genomgång 5          Övningar 5          Innehåll & struktur          Nästa lektion  >>      


3.6   Rekursion

Vad är rekursion?

  •   Rekursion är ett koncept inom problemlösning och programmering som tillämpar successiv upprepning.
  •   Ordet rekursion kommer från det latinska recurrere som betyder att köra igen, vilket innebär:
  •   I en algoritm återvänder man till tidigare steg och upprepar ett känt förlopp, ofta med andra parametrar.
  •   I programmering har vi hittills realiserat upprepning med loopar (iteration).
  •   Rekursion är ett alternativ till iteration.


Ett exempel: Fibonaccis problem

Kaniners fortplantning

Fibonacciproblemet.jpg


Följer man Fibonaccis instruktioner för kaniners fortplantning får man följande siffror:

Fibonaccitalen

Fibonaccitalen.jpg


Mönster för bildningen av Fibonaccis talföljd,

även kallad Fibonaccitalen:


Summan av två på varandra följande
fibonaccital ger nästa fibonaccital.

\( \qquad\qquad\qquad \) FibonacciBildb.jpg


Fibonaccis rekursionsformel

FibonacciRekFormel.jpg


Om en matematisk behandling av Fibonacciproblemet kan du läsa här.

I programmering kan Fibonaccis rekursionsformel direkt översättas till kod.


Rekursiva funktionen fib()

Vi kodar Fibonaccis rekursionsformel i C++ som en rekursiv funktion fib().

En funktion kallas för rekursiv om den anropar sig själv i sin egen definition.

Fib.jpg

Funktionen fib() anropas i huvudprogrammet FibonacciTest med vanligt funktionsanrop, inte rekursivt.


Programmet FibonacciTest


Beräkningskompexitet

Ber kompexitet.jpg


3.7   Mer om flervägsval

Bläddra igenom kursboken:
\( \qquad\;\;\, \)
Luriga else, sid 64.
\( \qquad\;\;\, \)
Kör programmen \( \;\; \)­TrickyElse, sid 55.
och \( \qquad\qquad\quad\;\; \)­CorrectElse, sid 57.\( \quad \)


switch med tomma case-satser

Bläddra igenom kursboken, sid 67.\( \quad \)
Kör programmet SwitchInequ, sid 58-59.\( \quad \)



Gå vidare till:        när du är klar med denna genomgång.










Copyright © 2024 TechPages AB. All Rights Reserved.