Iteration und Rekursion in Pascal

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Loading

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 LaTeX: x wird auf das Ergebnis des gleichen Verfahrens für eine Eingabe LaTeX: y zurückgeführt, das Ergebnis des Verfahrens für die Eingabe LaTeX: y wird wiederum auf das Ergebnis des Verfahrens für eine Eingabe LaTeX: 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 LaTeX: fak_LaTeX: rek%284%29%3A%3D4%2Afak_LaTeX: rek%283%29;

danach "Abstieg in die Rekursionstiefe":

     LaTeX: fak_LaTeX: rek%284%29%3A%3D4%2Afak_LaTeX: rek%283%29; 
         LaTeX: fak_LaTeX: rek%283%29%3A%3D3%2Afak_LaTeX: rek%282%29;
             LaTeX: fak_LaTeX: rek%282%29%3A%3D2%2Afak_LaTeX: rek%281%29;
                LaTeX: fak_LaTeX: rek%281%29%3A%3D1%2Afak_LaTeX: rek%280%29;

Für n=0 liefert das Verfahren den bekannten Wert 1.
Der rekursive "Aufstieg" liefert dann:

               LaTeX: fak_LaTeX: rek%281%29%3A%3D1%2A1%3D1;
               LaTeX: fak_LaTeX: rek%282%29%3A%3D2%2A1%3D2;
               LaTeX: fak_LaTeX: rek%283%29%3A%3D3%2A2%3D6;
               LaTeX: fak_LaTeX: rek%284%29%3A%3D4%2A6%3D24;


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. LaTeX: 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.

Persönliche Werkzeuge
Werkzeuge

Life-Hilfe zum Wiki