Differences
This shows you the differences between two versions of the page.
dvprog_13 [2019-12-06 16:10] Daniel Viström |
dvprog_13 [2022-07-18 13:20] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Genomgång - Rekursion ====== | ||
- | ==== Exempel1 ==== | ||
- | |||
- | <code php> | ||
- | |||
- | <?php | ||
- | |||
- | /* | ||
- | * Rekursiv funktion som beräknar värdet av den rekursiva | ||
- | * talföljden där a(1) = 5 och a(n+1)=a(n)+4. | ||
- | * | ||
- | * Denna talföljd kan även beskrivas med a(1) = 5 och a(n)=a(n-1)+4, | ||
- | * vilket vi använder oss av när vi kodar den. | ||
- | */ | ||
- | function a($n){ | ||
- | if ($n == 1){ // Brytvillkor | ||
- | return 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 'a4 = ' . a(4) . '< | ||
- | echo 'a5 = ' . a(5) . '< | ||
- | include ' | ||
- | |||
- | </ | ||
- | |||
- | ==== Exempel2 ==== | ||
- | |||
- | <code php> | ||
- | |||
- | <?php | ||
- | |||
- | /* | ||
- | * 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 ' | ||
- | |||
- | $name = ' | ||
- | $n = 4; | ||
- | |||
- | namnutskrift(' | ||
- | namnutskrift($name, | ||
- | |||
- | include ' | ||
- | |||
- | </ | ||
- | |||
- | |||
- | Utskrift från anropet namnutskrift(' | ||
- | ------------------------------------- | ||
- | < | ||
- | Daniel5 | ||
- | Daniel4 | ||
- | Daniel3 | ||
- | Daniel2 | ||
- | Daniel1 | ||
- | Hej1 | ||
- | Hej2 | ||
- | Hej3 | ||
- | Hej4 | ||
- | Hej5 | ||
- | </ |