Iteration und Rekursion in Pascal
Aus ProgrammingWiki

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 wird auf das Ergebnis des gleichen Verfahrens für eine Eingabe
zurückgeführt, das Ergebnis des Verfahrens für die Eingabe
wird wiederum auf das Ergebnis des Verfahrens für eine Eingabe
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 _
_
;
danach "Abstieg in die Rekursionstiefe":
_
_
;
_
_
;
_
_
;
_
_
;
Für n=0 liefert das Verfahren den bekannten Wert 1.
Der rekursive "Aufstieg" liefert dann:
_
;
_
;
_
;
_
;
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!
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.
-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.