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>