Rekursive Prozeduren 2
Inhaltsverzeichnis |
Aufgabe 1:
Schreiben Sie eine rekursive Prozedur fak, die eine Zahl als Argument erwartet und deren Fakultät als Ergebnis liefert.
<eval>(fak 5)</eval>
Aufgabe 2:
Schreiben Sie eine rekursive Prozedur fib, die die n-te Fibonaccizahl als Ergebnis liefert. Hinweis: Die n-te Fibonaccizahl errechnet sich aus der Summe ihrer beiden Vorgänger.
<eval>(fib 5)</eval>
Aufgabe 3:
Schreiben Sie eine rekursive Prozedur fibonacci_list, die eine Liste mit den
ersten n Fibonaccizahlen zurückgibt.
Hinweis: Verwenden Sie zur Lösung dieser Aufgabe Ihre Prozedur fib aus der
vorherigen Aufgabe!
<eval>(fibonacci_list 5)</eval>
Aufgabe 4:
Schreiben Sie eine Prozedur ascending, die eine Liste nimmt und #t zurückgibt,
falls die Listenelemente aufsteigend geordnet sind, ansonsten #f.
Hinweis: Beachten Sie das Resultat für die leere Liste ’().
Aufrufbeispiele:
|
<eval>;Aufrufbeispiel zum Testen Ihrer Prozedur (ascending '(1 2 8))</eval>
Aufgabe 5:
Schreiben Sie eine Prozedur my-length, die eine Liste als Argument nimmt und die Anzahl der Elemente in der 1. Ebene ausgibt. Die eingebaute Prozedur length darf dabei nicht verwendet werden!
Aufrufbeispiele:
> (my-length ’(1 2 3 4 5)) 5 > (my-length ’(1 2 3 4 5 (6 7) (8 (9 10 (11)))) 7 |
<eval>;Aufrufbeispiel zum Testen Ihrer Prozedur (my-length '(1 2 3 4 5 6 (7 2) 8))</eval>
Aufgabe 6:
Schreiben Sie eine weitere Prozedur deep-length die ebenfalls eine Liste als Ar- gument nimmt, jedoch die Anzahl aller Elemente in sämtlichen Teillisten ausgibt.
Aufrufbeispiele:
> (deep-length ’(1 2 3 4 5)) 5 > (deep-length ’(1 2 3 4 5 (6 7) (8 (9 10 (11)))) 11 |
<eval>;Aufrufbeispiel zum Testen Ihrer Prozedur (deep-length '(1 (2 3) (3 (5 7))))</eval>