Anders Genomgång 10 - Rekursion
<?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('head.php');
echo 'a1 = ' . a(1) . '<br>';
echo 'a2 = ' . a(2) . '<br>';
echo 'a3 = ' . a(3) . '<br>';
echo 'a4 = ' . a(4) . '<br>';
echo 'a5 = ' . a(5) . '<br>';
include('foot.php');
/* Programmet skriver ut:
a1 = 5
a2 = 9
a3 = 13
a4 = 17
a5 = 21
*/
?>
<?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, $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');
namnutskrift('Anders',5);
include('foot.php');
/* Programmet skriver ut:
Anders5
Anders4
Anders3
Anders2
Anders1
Hej1
Hej2
Hej3
Hej4
Hej5
*/
?>