13.6. Repetive Rekursion |
![]() |
![]() |
Letztmalig dran rumgefummelt: 20.12.07 07:39:26 |
![]() |
Rekursion: wiederholter
Aufruf eines Unterprogrammes durch sich selbst, bis eine definierte
Abbruchbedingung erreicht wurde - ist doch eigentlich ganz einfach - oder?
Das es dies eben nicht ist, zeigen wir im Nachhinein. Eine Rekursion ist ein Programmteil der, um eine Aufgabe, die sich bis zur Abbruchbedingung, also einen return-Fall, der true oder false, je nach Implementation, sein kann, liefert, gliedert, zu erledigen, verschachtelt ist. - Oder anders: Um Rekursion zu verstehen, muss man erst Rekursion verstehen ;-) |
||||
![]() |
1. Iteration |
||||
![]() |
|
||||
![]() |
Quellen:
|
1. Iteration |
![]() |
![]() |
![]() |
![]() |
Wiederholung, bis eine definierte Abbruchbedingung erreicht wird. Für den Fall, dass die Anzahl der Durchläufe bekannt, reduziert sich der Aufwand schon mal auf eine Zählschleife, in jedem Falle aber muss die Parameterweitergabe innerhalb der Schleife vorgenommen werden und zum definierten Abbruch in endlicher Zeit mit verfügbarer Menge führen. |
![]() |
das ist für einige Rekursionsarten ohne weiteres möglich und bis zu einer bestimmten Mächtigkeit auch von Vorteil. Kaskadenartige Rekursion lässt sich nicht mehr iterativ umsetzen, da hierbei zwei voneinander abhängige Wiederholungen gleichzeitig mit gegenseitig bekannten Parametern abgearbeitet werden müssen. |
![]() |
Was spricht gegen Rekursion?
|
![]() |
2. Rekursion |
![]() |
![]() |
![]() |
![]() |
Das muss aber auch einfacher gehen ;-) |
![]() |
Was spricht für Rekursion?
|
![]() |
Rekursive Prozeduren und Funktionen Für rekursive Aufrufe von Unterprogrammen im Allgemeinen müssen Parameter übergeben werden, damit immer eine Abbruchbedingung in den nächsten Aufruf „mitgenommen“ werden kann. Bei Prozeduren müssen dies Referenz- und bei Funktionen Werteparameter sein, da sonst die Rückkehrwerte überschrieben werden würden bzw. bei Prozeduren sonst nichts zurückgegeben wird. |
![]() |
... ist die Anzahl der rekursiven Aufrufe eines Unterprogramms, bis die Abbruchbedingung erfüllt ist |
3. Direkt und Indirekte Rekursion |
![]() |
![]() |
![]() |
![]() |
Bei direkter Rekursion ruft sich das Unterprogramm bis zur Erfüllung der Abbruchbedingung jeweils direkt selber auf - die Abbruchbedingung ist auch in diesem Unterprogramm eingebunden (McCarthy-Funktion, Hofstätter-Funktion), bei indirekter Rekursion wird das Unterprogramm wiederholt von einem anderen Unterprogramm aus aufgerufen - die Abbruchbedingung steht im übergeordneten Unterprogramm (Collatz-Funktion). | ||
![]() |
beiden ist aber das Prinzip des rekursiven Abstiegs und
nachfolgenden rekursiven Aufstiegs gemein |
||
![]() |
4. Absteigender und aufsteigender Ast |
![]() |
![]() |
![]() |
![]() |
In einem Ast wird gerechnet, im anderen mit veränderten Argument nur die Funktion oder Prozedur bis zu Abbruchbedingung selbst aufgerufen. Ob im ausfsteigenden oder absteigenden Ast gerechnet wird, hängt von der physischen Stelle des Unterprogrammaufrufes auf sich selbst ab (Anfang oder Ende). | ||||||||||||||||||
![]() |
|||||||||||||||||||
![]() |
Problem Wortumkehr: rekursiver Abstieg | ||||||||||||||||||
![]() |
|
||||||||||||||||||
![]() |
|
5. Endständige Rekusion |
![]() |
![]() |
![]() |
![]() |
In einem Ast wird gerechnet, im anderen mit veränderten Argument nur die Funktion oder Prozedur bis zu Abbruchbedingung selbst aufgerufen. Ob im ausfsteigenden oder absteigenden Ast gerechnet wird, hängt von der physischen Stelle des Unterprogrammaufrufes auf sich selbst ab (Anfang oder Ende). |
![]() |
|
![]() |
6. Echte Rekusion |
![]() |
![]() |
![]() |
![]() |
In einem Ast wird gerechnet, im anderen mit veränderten Argument nur die Funktion oder Prozedur bis zu Abbruchbedingung selbst aufgerufen. Ob im ausfsteigenden oder absteigenden Ast gerechnet wird, hängt von der physischen Stelle des Unterprogrammaufrufes auf sich selbst ab (Anfang oder Ende). |
![]() |
|
![]() |
7. Verwandte Themen |
![]() |
![]() |
![]() |
![]() |
Das Vorangestellte hilft wirtschaften, löst jedoch kein einziges Problem (allerdings ohne Beachtung der Worst-Case-Strategien wird man auch nicht erfolgreich Software entwickeln und/oder informatische Projekte realisieren können). Deshalb nunmehr das, was wirklich Arbeiten hilft. | ||||||||||||
![]() |
|
||||||||||||
![]() |
|
||||||||||||
![]() |
|
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost im Oktober 2007 |
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |
Diese Seite wurde ohne Zusatz irgendwelcher Konversationsstoffe erstellt ;-) |