Iteration Rekursion
Inhaltsverzeichnis |
Definition
Iteration bezeichnet das wiederholte Durchlaufen von Anweisungen. Typischerweise wird dabei mitgezählt, wie oft die jeweilige Aktion erledigt wird. Wir kennen dafür die Sprachkonstrukte for..to..do, while..do, repeat..until.
Bei einer Rekursion erfolgt die Definition eines Problems, einer Funktion oder eines Verfahrens "durch sich selbst". Es handelt sich also wieder um eine Wiederholung, aber ohne Schleife!
Das Ergebnis eines Verfahrens für die Eingabe x wird auf das Ergebnis des gleichen Verfahrens für eine Eingabe y zurückgeführt, das Ergebnis des Verfahrens für die Eingabe y wird wiederum auf das Ergebnis des Verfahrens für eine Eingabe z zurückgeführt, usw.
Dabei muss mindestens für einen Wert das Ergebnis des Verfahrens bekannt sein!
Typische Beispiele
Fakultät
iterativ
Abarbeitung für n=4:
n |
Ergebnis |
- |
1 |
4 |
4 |
3 |
12 |
2 |
24 |
1 |
24 |
rekursiv
Abarbeitung für n=4:
Aufruf fak_rek(4):=4*fak_rek(3);
danach "Abstieg in die Rekursionstiefe":
fak_rek(4):=4*fak_rek(3); fak_rek(3):=3*fak_rek(2); fak_rek(2):=2*fak_rek(1); fak_rek(1):=1*fak_rek(0);
Für n=0 liefert das Verfahren den bekannten Wert 1.
Der rekursive "Aufstieg" liefert dann:
fak_rek(1):=1*1=1; fak_rek(2):=2*1=2; fak_rek(3):=3*2=6; fak_rek(4):=4*6=24;
Das Affenmodell
Eine schöne Interpretation des rekursiven Prozeduraufrufes finden wir bei WAGENKNECHT in: Rekursionen - Ein didaktischer Zugang mit Funktionen, Dümmler Verlag, Bonn 1994.
"Der Auftrag, der von außen dem höchsten Oberaffen übergeben wurde, wird von diesem nicht vollständig bearbeitet, sondern in etwas abgeschwächter Form dem untergebenen Affen übergeben. Dieser verhält sich ebenso zu seinem Untergebenen. Der letzte Affe in dieser Hierarchie kann den ihm übergebenen Auftrag erfüllen und dem übergeordneten Affen übergeben. Jeder weitere Affe hat die Pflicht, das Resultat der Erledigung seines Auftrages seinem Auftraggeber zu übergeben. Schließlich kann der Ranghöchste sein Ergebnis abliefern.
Parallelen zu Einrichtungen, Ämtern und Institutionen unserer Gesellschaft sind unbeabsichtigt oder rein zufällig."
Potenz
Das Potenzieren wird bekanntermaßen iterativ z.B. so implementiert:
iterativ
rekursiv
Vervollständigen Sie den Quelltext für die rekursive Berechnung einer Potenz!
Turtle zeichnet rekursiv
Zusammenfassung
Rekursion bietet sich dann an, wenn man ein gestelltes Problem durch eine Funktion schrittweise in ein etwas einfacheres Problem umwandeln kann.
typischer Aufbau einer rekursiven Funktion
- 1. if-Befehl, der das Ende der Selbstaufrufe bestimmt
- 2. ein Aufruf der Funktion selbst
Nachteile der Rekursion
- 1. Jeder Aufruf kostet Zeit - Rekursion prinzipiell langsamer als Iteration
- 2. jeder Aufruf kostet Speicherplatz - viel Speicher im Stack (Speicherstapel)
Jede Iteration kann als Rekursion formuliert werden, jede Rekursion als Iteration (teilweise schwierig). Rekursionen werden durch den Compiler bzw. Interpreter der Programmiersprache aufgelöst - der PC-Prozessor arbeitet iterativ.
