Skillnad mellan versioner av "Rekursion"
Taifun (Diskussion | bidrag) m |
Taifun (Diskussion | bidrag) m |
||
(2 mellanliggande versioner av samma användare visas inte) | |||
Rad 37: | Rad 37: | ||
<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>Rekursion används här som ett koncept för | + | <big>Rekursion används här som ett koncept för problemlösning, t.ex. i exemplet ovan: |
− | Hur gör jag för att dela upp givet tal i sina primfaktorer? Jag upprepar stegen 1-3 i algoritmen ovan. | + | Hur gör jag för att dela upp ett 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/ | + | Bara att jag gör det varje gång med ett annat startvärde: med n/k istället för med n, där k = en primfaktor. |
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>]]. | 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>]]. |
Nuvarande version från 14 mars 2023 kl. 10.08
<< 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().
Rekursion används här som ett koncept för problemlösning, t.ex. i exemplet ovan:
Hur gör jag för att dela upp ett 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/k istället för med n, där k = en primfaktor.
I matematiken realiseras konceptet med s.k. rekursionsformler, se t.ex. Fibonaccis rekursionsformel.
Annat exempel: Fibonacci
Kaniners fortplantning
Följer man Fibonaccis instruktioner för kaniners fortplantning får man följande siffror:
Fibonaccitalen
Mönster för bildningen av Fibonaccis talföljd, även kallad Fibonaccitalen: Summan av två på varandra följande |
\( \qquad\qquad\qquad \) | ![]() |
Fibonaccis rekursionsformel
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.
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
Fortsätt med Dagens övningar.
Copyright © 2023 TechPages AB. All Rights Reserved.