Differences
This shows you the differences between two versions of the page.
— |
amprog_10 [2022-07-18 13:20] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Anders Genomgång 10 - Rekursion ====== | ||
+ | |||
+ | ==== Exempel1 ==== | ||
+ | |||
+ | <code php> | ||
+ | |||
+ | <?php | ||
+ | // EXEMPEL 1 | ||
+ | |||
+ | /* | ||
+ | * Rekursiv funktion som beräknar värdet av den rekursiva | ||
+ | * talföljden där a(1) = 5 och a(n+1)=a(n)+4. | ||
+ | */ | ||
+ | function a($n){ | ||
+ | if ($n == 1){ // Brytvillkor | ||
+ | return 5; // a(1) = 5 | ||
+ | } else { | ||
+ | return a($n-1) + 4; | ||
+ | // Funktionen anropar sig själv med ett nytt värde. | ||
+ | // Fortgår tills brytvillkoret nås. | ||
+ | // Observera att flera kopior av funktionen är igång samtidigt | ||
+ | // (lika många som antal gjorda (ej avslutade) anrop). | ||
+ | // Varje kopia har sina egna unika värden på parametrar och lokala variabler. | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | include(' | ||
+ | |||
+ | echo 'a1 = ' . a(1) . '< | ||
+ | echo 'a2 = ' . a(2) . '< | ||
+ | echo 'a3 = ' . a(3) . '< | ||
+ | echo 'a4 = ' . a(4) . '< | ||
+ | echo 'a5 = ' . a(5) . '< | ||
+ | |||
+ | include(' | ||
+ | |||
+ | /* Programmet skriver ut: | ||
+ | a1 = 5 | ||
+ | a2 = 9 | ||
+ | a3 = 13 | ||
+ | a4 = 17 | ||
+ | a5 = 21 | ||
+ | */ | ||
+ | ?> | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Exempel2 ==== | ||
+ | |||
+ | <code php> | ||
+ | |||
+ | <?php | ||
+ | // EXEMPEL 2 | ||
+ | |||
+ | /* | ||
+ | * Rekursiv funktion som skriver ut ett namn. | ||
+ | * Rekursion går att använda istället för while om man vill. | ||
+ | */ | ||
+ | |||
+ | function namnutskrift($namn, | ||
+ | echo $namn . $antal . '< | ||
+ | if ($antal == 1){ // Brytvillkor. | ||
+ | } else { | ||
+ | namnutskrift($namn, | ||
+ | // Funktionen anropar sig själv med ett nytt värde. | ||
+ | // Fortgår tills brytvillkoret nås. | ||
+ | } | ||
+ | echo ' | ||
+ | } | ||
+ | |||
+ | |||
+ | include(' | ||
+ | |||
+ | namnutskrift(' | ||
+ | |||
+ | include(' | ||
+ | |||
+ | /* Programmet skriver ut: | ||
+ | Anders5 | ||
+ | Anders4 | ||
+ | Anders3 | ||
+ | Anders2 | ||
+ | Anders1 | ||
+ | Hej1 | ||
+ | Hej2 | ||
+ | Hej3 | ||
+ | Hej4 | ||
+ | Hej5 | ||
+ | */ | ||
+ | ?> | ||
+ | |||
+ | </ | ||