Skillnad mellan versioner av "Rekursion"

Från Mathonline
Hoppa till: navigering, sök
m
m
Rad 33: Rad 33:
 
=== <b><span style="color:#931136">Algoritmen Primtalsfaktorisering</span></b> ===
 
=== <b><span style="color:#931136">Algoritmen Primtalsfaktorisering</span></b> ===
  
<big>Strategi för att faktorisera ett givet primtal, implementerad i den rekursiva [[Primtal#Programmet_PrimFaktorer|<b><span style="color:blue">funktionen faktorisera()</span></b>]].</big>
+
<big>Strategi för att faktorisera ett givet tal, implementerad i den rekursiva [[Primtal#Programmet_PrimFaktorer|<b><span style="color:blue">funktionen faktorisera()</span></b>]].</big>
  
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Algoritmen_Primtalsfaktoriseringa.jpg]]</div>
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Algoritmen_Primtalsfaktoriseringa.jpg]]</div>
 
<big><big>Körexempel på Gissa tal-spelet där algoritmen Intervallhalvering använts:</big></big>
 
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Gissa_tal_Korex.jpg]]</div>
 
  
 
<big>Rekursion används här som ett koncept för prblemlösning:
 
<big>Rekursion används här som ett koncept för prblemlösning:
  
Hur gör jag för att med så få försök som möjligt gissa rätt i Gissa tal-spelet? Jag upprepar intervallhalvering.
+
Hur gör jag för att dela upp givet tal i sina primfaktorer? Jag upprepar stegen 1-3 i algoritmen ovan.
  
Nu ska vi använda rekursion som ett koncept inom programmering, se [[1.10_Rekursion#Programmet_Fibonacci|<b><span style="color:blue">Programmet Fibonacci</span></b>]].
+
Bara att jag gör det varje gång med ett annat startvärde: med n/en primfaktor istället för med n.
  
I matematiken realiseras konceptet med s.k. <i>rekursionsformler</i>, se [[1.10_Rekursion#Fibonaccis_rekursionsformel|<b><span style="color:blue">Fibonaccis rekursionsformel</span></b>]].
+
I matematiken realiseras konceptet med s.k. <i>rekursionsformler</i>, se t.ex. [[1.10_Rekursion#Fibonaccis_rekursionsformel|<b><span style="color:blue">Fibonaccis rekursionsformel</span></b>]].
 
</big>
 
</big>
 
</div>
 
</div>

Versionen från 13 mars 2023 kl. 21.18

        <<  Agenda          Genomgång Primtal          Genomgång Rekursion          Dagens övningar          Nästa lektion  >>      


Vad är rekursion?

Ordet rekursion kommer från det latinska recurrere som betyder att köra igen. Dvs:


Man återvänder till något som man redan gjort en gång och upprepar ett känt förlopp, kanske under andra förutsättningar.


Rekursion är ett koncept som används i problemlösning genom successiv upprepning.


Hittills har vi realiserat upprepning i programmering med loopar. Rekursion är ett alternativ till loopar.


Exempel på en rekursiv algoritm

Algoritmen Primtalsfaktorisering

Strategi för att faktorisera ett givet tal, implementerad i den rekursiva funktionen faktorisera().

Algoritmen Primtalsfaktoriseringa.jpg

Rekursion används här som ett koncept för prblemlösning:

Hur gör jag för att dela upp givet tal i sina primfaktorer? Jag upprepar stegen 1-3 i algoritmen ovan.

Bara att jag gör det varje gång med ett annat startvärde: med n/en primfaktor istället för med n.

I matematiken realiseras konceptet med s.k. rekursionsformler, se t.ex. Fibonaccis rekursionsformel.


Annat exempel: Fibonacci

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


Mer utförligt om om Fibonacciproblemet kan du läsa här.

Fibonaccis rekursionsformel kan direkt tas över till följande pythonprogram:


Programmet Fibonacci

I Python kan Fibonaccis rekursionsformel kodas som en rekursiv funktion fib().

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

FibonacciProgr.jpg

Funktionen fib() anropar sig själv två gånger i sin definition på rad 9: rekursiva anrop!

Anropet på rad 14 är ett vanligt (inte rekursivt) funktionsanrop i huvudprogrammet.

Körresultat

FibonacciKorEx.jpg


Fortsätt med Dagens övningar.


 








Copyright © 2023 TechPages AB. All Rights Reserved.