Differences

This shows you the differences between two versions of the page.

Link to this comparison view

amprog_10 [2018-03-16 12:12] (current)
Anders Mosshäll created
Line 1: Line 1:
 +====== Anders Genomgång 10 - Rekursion ======
 +
 +==== Exempel1 ====
 +
 +<code php>
 +
 +<?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
 +*/
 +?>
 +
 +</​code>​
 +
 +==== Exempel2 ====
 +
 +<code php>
 +
 +<?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
 +*/
 +?>
 +
 +</​code>​