Differences

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

Link to this comparison view

prog1_11 [2018-04-09 09:10]
Daniel Viström
prog1_11 [2022-07-18 13:20]
Line 1: Line 1:
-====== Rekursion ====== 
- 
- 
-Rekursion utan dator: {{:rekursion.pdf|}} 
- 
-**Följande uppgifter ska lösas med hjälp av rekursion. Inga loopar med while eller liknande får användas.** 
- 
-1. 
-Använd talföljden i uppgift 2214 b). Skriv en rekursiv funktion **a($n)**  
-som beräknar det tal i talföljden som har ordningsnummer $n. I huvudprogrammet ska svaret på beräkningen skrivas ut enligt följande där //n// matas in från ett formulär: 
- 
-<code php> 
-  if(isset($_POST['n'])){  
-    echo a($_POST['n']); 
-  } 
-</code>  
- 
-2. 
-Gör en rekursiv funktion, med en parameter, som beräknar trädets längd efter ett  
-antal år ( se uppgift 5036 ). 
- 
-3a. 
-Skriv en rekursiv funktion **calculate1($tal)** som anropar sig själv och på så sätt räknar ner heltalen  
-från **$tal** till 1 och skriver ut samtliga tal. 
- 
-3b. 
-Skriv en rekursiv funktion **calculate2($tal)** som anropar sig själv och på så sätt räknar upp heltalen  
-från 1 till **$tal** och skriver ut samtliga tal. \\ 
-Tips: Det räcker att flytta en rad i koden för föregående uppgift. 
- 
-4. 
-Gör en sida med ett formulär. Man skall mata in ett tal och trycka på submit. En rekursiv funktion ska anropas och skriva ut "Hello world!" lika många gånger som talet man matade in. Ett "Hello world!" per rad. 
- 
-5. 
-Skriv en rekursiv funktion **power($b,$n)** som beräknar b<sup>n</sup>, där **$n** är ett heltal större  
-än noll och **$b** är ett decimaltal. 
-Ledning: Då $n = 1 kan funktionen returnera talet **$b**. Annars måste den returnera  
-**$b * power($b,$n-1)**. 
- 
-6. 
-Gör en rekursiv funktion som tar ett tal som parameter och beräknar fakulteten av talet. 
-Programmet behöver inte funka för större tal än 12. 
-<code> 
-  ex 3! beräknas 1*2*3 
-  ex 5! beräknas 1*2*3*4*5 
-</code> 
- 
-7. 
-Gör en rekursiv funktion som skriver ut 7:ans multiplikationstabell. (Från 1-10). Tabellen skall vara just en tabell. 
- 
- 
-8*. 
-Gör en sida där man matar in två tal, det minsta först. En rekursiv funktion ska anropas som skriver ut alla tal mellan de två tal som man matade in. 
- 
- 
-  Du matade in tal 1: 3 
-  Du matade in tal 2: 9 
-   
-  3 4 5 6 7 8 9  
- 
-9*. 
-En fackförening erbjuds ett flerårsavtal enligt följande modell:\\ 
-Första året (år 1) får varje arbetstagare en månadslön på 15000 kr.\\ 
-Följande år (år 2, 3, 4 osv.) får man varje år en ökning med 4% av föregående års lön, samt dessutom ett generellt påslag på 400 kr.\\ 
-Skriv en **rekursiv** funktion som beräknar månadslönen ett visst år. Som enda parameter skall funktionen ha ett årsnummer. 
- 
-10*. 
-Skriv en rekursiv funktion **siffsum**, med en heltalsparameter **$n**. Funktionen ska returnera summan av siffrorna i talet. 
- 
-<php> 
-/* 
-<?php 
-function u1($n) { 
-  if ($n == 1) { 
-    return 4; 
-  } 
-  return 2*u1($n-1)-3; 
-} 
-echo "<br> u1, svar: " . u1(4); 
- 
-function u2($n) { 
-  if ($n == 1) { 
-    return 2.8; 
-  } 
-  return 1.12*u2($n-1); 
-} 
-echo "<br> u2, svar: " . u2(4); 
- 
- 
-echo '<br>u3 a och b'; 
-function u3a($n) { 
-  echo '<br>' . $n; 
-  if ($n == 1) { 
-    return; 
-  } 
-  u3a($n-1); 
-} 
-u3a(5); 
- 
-function u3b($n) { 
-  if ($n == 1) { 
-    echo '<br>' . $n; 
-    return; 
-  } 
-  u3b($n-1); 
-  echo '<br>' . $n; 
-} 
-u3b(5); 
- 
-function u4($str, $antal){ 
-  echo $antal . ':' . $str . '<br>'; 
-  if ($antal == 1){  // Brytvillkor. 
-    return; 
-  } 
-  u4($str, $antal-1); 
- 
-} 
-echo '<br> u4:<br>'; 
-u4('Hello World', 5); 
- 
- 
-function u5($b,$n) { 
-  if ($n == 1) { 
-    return $b; 
-  } 
-  return $b * u5($b,$n-1); 
-} 
-echo "<br> u5, svar: " . u5(2.2,3); 
- 
-function u6($n) { 
-  if ($n == 1) { 
-    return $n; 
-  } 
-  return $n * u6($n-1); 
-} 
-echo "<br> u6, svar: " . u6(4); 
- 
-function u7($n) { 
-  if ($n == 1) { 
-    echo "$n x 7 = " . $n*7 . "<br>"; 
-    return; 
-  } 
-  u7($n-1); 
-  echo "$n x 7 = " . $n*7 . "<br>"; 
-} 
-echo "<br> u7, svar: <br>"; 
-u7(10); 
-function u8($n1,$n2) { 
-  if ($n1 > $n2) { 
-    return; 
-  } 
-  u8($n1,$n2-1); 
-  echo $n2 . ','; 
-} 
-echo "<br> u8, svar: "; 
-u8(3,6); 
- 
-function u9($n) { 
-  if ($n == 1) { 
-    return 15000; 
-  } 
-  return 1.04*u9($n-1)+400; 
-} 
-echo "<br> u9, svar: " . u9(3); 
- 
- 
-function u10($n) { 
-  if ((int)($n/10) == 0) { 
-    return $n; 
-  } 
-  return u10((int)($n/10)) + $n%10; 
-} 
-echo "<br> u10, svar: " . u10(981); 
-*/ 
-</php>