Rekursive Prozeduren 2

Aus ProgrammingWiki
Archivierte Version vom 2011-11-08T12:57:57+00:00. Aktuelle Version

Inhaltsverzeichnis

zur Übungsübersicht

Fakultät

Schreiben Sie eine rekursive Prozedur fak, die eine Zahl n als Argument erwartet und deren Fakultät n! als Ergebnis liefert.

Fibonacci

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.

Fibonacci 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.

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

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


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.

Hinweis: Verwenden Sie Ihre Prozedur mylength und arbeiten Sie an deren Programmcode, um deep-length herzustellen.

Aufrufbeispiele:

> (deep-length ’(1 2 3 4 5))
5
> (deep-length ’(1 2 3 4 5 (6 7) (8 (9 10 (11))))
11

zur Übungsübersicht