Differences
This shows you the differences between two versions of the page.
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: {{: | ||
- | |||
- | **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[' | ||
- | echo a($_POST[' | ||
- | } | ||
- | </ | ||
- | |||
- | 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!" | ||
- | |||
- | 5. | ||
- | Skriv en rekursiv funktion **power($b, | ||
- | än noll och **$b** är ett decimaltal. | ||
- | Ledning: Då $n = 1 kan funktionen returnera talet **$b**. Annars måste den returnera | ||
- | **$b * power($b, | ||
- | |||
- | 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. | ||
- | < | ||
- | ex 3! beräknas 1*2*3 | ||
- | ex 5! beräknas 1*2*3*4*5 | ||
- | </ | ||
- | |||
- | 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**, | ||
- | |||
- | <php> | ||
- | /* | ||
- | <?php | ||
- | function u1($n) { | ||
- | if ($n == 1) { | ||
- | return 4; | ||
- | } | ||
- | return 2*u1($n-1)-3; | ||
- | } | ||
- | echo "< | ||
- | |||
- | function u2($n) { | ||
- | if ($n == 1) { | ||
- | return 2.8; | ||
- | } | ||
- | return 1.12*u2($n-1); | ||
- | } | ||
- | echo "< | ||
- | |||
- | |||
- | echo '< | ||
- | function u3a($n) { | ||
- | echo '< | ||
- | if ($n == 1) { | ||
- | return; | ||
- | } | ||
- | u3a($n-1); | ||
- | } | ||
- | u3a(5); | ||
- | |||
- | function u3b($n) { | ||
- | if ($n == 1) { | ||
- | echo '< | ||
- | return; | ||
- | } | ||
- | u3b($n-1); | ||
- | echo '< | ||
- | } | ||
- | u3b(5); | ||
- | |||
- | function u4($str, $antal){ | ||
- | echo $antal . ':' | ||
- | if ($antal == 1){ // Brytvillkor. | ||
- | return; | ||
- | } | ||
- | u4($str, $antal-1); | ||
- | |||
- | } | ||
- | echo '< | ||
- | u4(' | ||
- | |||
- | |||
- | function u5($b,$n) { | ||
- | if ($n == 1) { | ||
- | return $b; | ||
- | } | ||
- | return $b * u5($b, | ||
- | } | ||
- | echo "< | ||
- | |||
- | function u6($n) { | ||
- | if ($n == 1) { | ||
- | return $n; | ||
- | } | ||
- | return $n * u6($n-1); | ||
- | } | ||
- | echo "< | ||
- | |||
- | function u7($n) { | ||
- | if ($n == 1) { | ||
- | echo "$n x 7 = " . $n*7 . "< | ||
- | return; | ||
- | } | ||
- | u7($n-1); | ||
- | echo "$n x 7 = " . $n*7 . "< | ||
- | } | ||
- | echo "< | ||
- | u7(10); | ||
- | function u8($n1,$n2) { | ||
- | if ($n1 > $n2) { | ||
- | return; | ||
- | } | ||
- | u8($n1, | ||
- | echo $n2 . ','; | ||
- | } | ||
- | echo "< | ||
- | u8(3,6); | ||
- | |||
- | function u9($n) { | ||
- | if ($n == 1) { | ||
- | return 15000; | ||
- | } | ||
- | return 1.04*u9($n-1)+400; | ||
- | } | ||
- | echo "< | ||
- | |||
- | |||
- | function u10($n) { | ||
- | if ((int)($n/ | ||
- | return $n; | ||
- | } | ||
- | return u10((int)($n/ | ||
- | } | ||
- | echo "< | ||
- | */ | ||
- | </ | ||