Rekursive Prozeduren 2
Inhaltsverzeichnis |
Fakultät
Schreiben Sie eine rekursive Prozedur fak, die eine Zahl n als Argument erwartet und deren Fakultät n! als Ergebnis liefert.
<eval id="4ae713bf9addf">(fak 5)</eval>
Fibanocci
Schreiben Sie eine rekursive Prozedur fib, die die n-te Fibonacci-Zahl als Ergebnis liefert.
Hinweis: Die n-te Fibonacci-Zahl ergibt sich aus der Summe ihrer beiden Vorgänger. Die 0-te und 1-te Fibonacci-Zahl ist jeweils 1.
<eval id="4ae713bf9b5b6">(fib 5)</eval>
Fibanocci Liste
Schreiben Sie eine rekursive Prozedur fibonacci_list, die eine Liste mit den ersten n Fibonaccizahlen zurückgibt. Beachten Sie, dass (fib 0) die erste Fibonacci-Zahl in der Liste liefert.
Hinweis: Verwenden Sie zur Lösung dieser Aufgabe Ihre Prozedur fib aus der vorherigen Aufgabe!
Sollte die entstehende Liste absteigend sortiert sein, so kann dies mittels reverse behoben werden.
<eval id="4ae713bf9bd97">(fibonacci_list 5)</eval>
Ascending List
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:
> (ascending '(1 2 4 7)) #t > (ascending '(1 3 4 5 2 6)) #f > (ascending '()) #t |
<eval id="4ae713bf9c4f5">(ascending '(1 2 8 34 89 999))</eval>
Längenbestimmung
Listenlänge
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 id="4ae713bf9cc3a">(my-length '(1 2 (3 (4 5 6)) (7 2) 8))</eval>
Tiefenlänge
Schreiben Sie eine weitere Prozedur deep-length, die ebenfalls eine Liste als Argument 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 id="4ae713bf9d40e">(deep-length '(1 (2 3) (3 (5 7))))</eval>