Thema: Delphi Rekursion vs. Iteration

Einzelnen Beitrag anzeigen

Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

AW: Rekursion vs. Iteration

  Alt 8. Jun 2010, 12:35
Über dieses Thema der - vermutlich - theoretischen Informatik gelangten bestimmt schon manche an ihren Doktorhut.

Tendenziell ist die Iteration schneller und von geringerem Speicherbedarf (s. Luckies Bemerkung), vor allem ohne Stackspeicherverbrauch. Mit Rekursion ist so manche Problemlösung dafür schneller und kürzer beschrieben - wenigstens auf dem Papier. Zudem kann ich mir vorstellen, daß die Rekursion als etwas anspruchsvoller, also akademisch eleganter empfunden wird.

Ursache beider sind Ähnlichkeiten und Wiederholungen im Programmablauf, und deren Vorwegnahme im Programmcode (in gewisser Weise ist ein Programm ein Ablaufplan für ein später laufendes Programm, besser, für die Menge seiner potentiell ablaufenden Programme) kann eben auf unterschiedliche Weise beschrieben werden.

Stimmt das?

Wie kann ich die Suche z. B. im Verzeichnisbaum durch eine Iteration abbilden?
Ja, Rekursion lässt sich immer als Iteration + Stack umsetzen. Nicht zufällig heißt das Ding, auf dem die Variablen landen, gleich .
Ist damit so eine Art „Pseudo-Entrekursionierung/-rekursivierung“ gemeint? So etwas lernte ich in Robert Sedgewicks Standardwälzer beim Quicksort kennen und implementierte es auch in mein Sortierkino. Im Prinzip wird die Stackbehandlung „zu Fuß“ nachgebildet. Grund ist, daß Quicksort einer der Algorithmen ist, die sich nicht (wenistens nicht zufriedenstellend) derekursionieren/-rekursivieren lassen. Auch bei hierarchischen bzw. Baumstrukturen mit beliebiger bzw. unbekannter Tiefe ist mir ein nichtrekursives, also iteratives Vorgehen nicht simpel einleuchtend (mag sein, daß es möglich ist). Allerdings gehöre ich zu dem - wohl übergroßen - Anteil der Forumsmitglieder, die nicht Informatik studierten.

Edit: Das neue Timeout ist eine Zumutung, Daniel, bitte tue etwas dagegen!

Geändert von Delphi-Laie ( 8. Jun 2010 um 15:08 Uhr)
  Mit Zitat antworten Zitat