Rekursive Prozeduren 2

Aus ProgrammingWiki
Archivierte Version vom 2009-10-27T15:41:28+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.

<eval id="4ae713bf9addf">(fak 5)</eval>

Fibanocci

Schreiben Sie eine rekursive Prozedur fib, die die n-te Fibonaccizahl als Ergebnis liefert.

Hinweis: Die n-te Fibonaccizahl 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

Hinweis: Verwenden Sie zur Lösung dieser Aufgabe Ihre Prozedur fib aus der vorherigen Aufgabe!

<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">;Aufrufbeispiel zum Testen Ihrer Prozedur (ascending '(1 2 8))</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">;Aufrufbeispiel zum Testen Ihrer Prozedur (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">;Aufrufbeispiel zum Testen Ihrer Prozedur (deep-length '(1 (2 3) (3 (5 7))))</eval>

zur Übungsübersicht