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