Genomgång - Rekursion
Exempel1
<?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 'head.php'; echo 'a4 = ' . a(4) . '<br>'; echo 'a5 = ' . a(5) . '<br>'; include 'foot.php';
Exempel2
<?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, $antal){ echo $namn . $antal . '<br>'; if ($antal == 1){ // Brytvillkor. } else { namnutskrift($namn, $antal-1); // Funktionen anropar sig själv med ett nytt värde. // Fortgår tills brytvillkoret nås. } echo 'Hej' . $antal . '<br>'; // Skrivs ut när den "inre"-funktionen är färdigkörd. } include 'head.php'; $name = 'Ulla'; $n = 4; namnutskrift('Daniel',5); namnutskrift($name, $n); include 'foot.php';
Utskrift från anropet namnutskrift('Daniel',5)
Daniel5 Daniel4 Daniel3 Daniel2 Daniel1 Hej1 Hej2 Hej3 Hej4 Hej5