Differences

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

Link to this comparison view

dvprog_13 [2019-12-06 16:10]
Daniel Viström
dvprog_13 [2022-07-18 13:20]
Line 1: Line 1:
-====== Genomgång - Rekursion ====== 
  
-==== Exempel1 ==== 
- 
-<code php> 
- 
-<?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'; 
- 
-</code> 
- 
-==== Exempel2 ==== 
- 
-<code php> 
- 
-<?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'; 
- 
-</code> 
- 
- 
-Utskrift från anropet namnutskrift('Daniel',5) 
-------------------------------------- 
-<code> 
-Daniel5 
-Daniel4 
-Daniel3 
-Daniel2 
-Daniel1 
-Hej1 
-Hej2 
-Hej3 
-Hej4 
-Hej5 
-</code>