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
*/
?>