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:
if(isset($_POST['n'])){ echo a($_POST['n']); }
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 bn, 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.
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, med en heltalsparameter $n. Funktionen ska returnera summan av siffrorna i talet.