Differences
This shows you the differences between two versions of the page.
amprog_10 [2018-03-16 12:12] Anders Mosshäll created |
amprog_10 [2022-07-18 13:20] |
||
---|---|---|---|
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 | ||
- | */ | ||
- | ?> | ||
- | |||
- | </ | ||