Thema: Delphi Rekursion vs. Iteration

Einzelnen Beitrag anzeigen

Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#97

AW: Rekursion vs. Iteration

  Alt 13. Jun 2010, 15:41
Zunächst einmal heißt es „lies“ (oder heißt die inzwischen aus der Mode gekommen Dateibezeichnung „lesemich.txt“?).
Es ist nunmal nicht jeder Deutscher in diesem Forum. Mir wärs eh lieber, wenn die ganze Diskussion auf englisch geführt werden würde. Aber danke für den Hinweis...

Ich verstand zudem sehr wohl, daß man Iterationen auch über Rekursion (bzw. umgekehrt) abbilden kann, daß es da eine Äquivalenz gibt.

Ich dachte eigentlich, daß ich mich klar genug ausdrückte: Einer bestimmten rekursiven Lösung. Es gibt auch eine andere, für die das nicht gilt.
Du hast dich offensichtlich nicht klar genug ausgedrückt. Folgendes Zitat lässt auch relativ wenig Interpretationsmöglichkeiten offen:
Nachzuweisen, daß eine iterative einer (bestimmten) rekursiven Lösung überlegen ist, bedurfte es ja nur einer Folge, die schon seit dem späten Hochmittelalter (oder frühen Spätmittelalter) bekannt ist.
Entweder du hast eine triviale Aussage getroffen (bspw. Quicksort rekursiv ist besser als Bogosort iterativ), woraus sich aber keine sinnvollen Schlüsse ziehen lassen können, und schon gar nicht für die Diskussion relevant sind, oder du sprichst hier eindeutig von der pauschalen Überlegenheit der iterativen Implementierung der Fibonaccifolge über der rekursiven. Kannst du diese dann begründen? Ich behaupte, die Endrekursive Variante ist mindestens so einfach zu erkennen wie die iterative, gleich schnell, dafür aber einfacher zu zeigen. Bis auf die Lesbarkeit, welche ein subjektiver Faktor ist, gibt es keine Begründung, warum die iterative Implementierung der rekursiven Überlegen sein soll. Ein objektiver Vorteil der rekursiven Variante ist die Trivialität, ihre Korrektheit zu zeigen. Lässt man subjektives Empfinden beiseite, wäre also die rekursive Variante tatsächlich der iterativen überlegen.

Und so etwa kommt mir das mit den iterativen Rekursionen wenigstens bei dem hier so strapazierten Beispiel der Fibonacci-Berechnung auch vor: Natürlich kann man auch eine Rekursion dort hineinwürgen, wenn man denn unbedingt eine haben möchte, weil man sie so sehr mag, aber die eingangs so hochgelobten Vorteile wie Übersichtlichkeit, Wartbarkeit, geringeres Fehlerrisiko usw. bleiben dabei nach meiner Einschätzung voll auf der Strecke, sie sind jedenfalls nicht offensichtlich besser als bei der Iteration.
  • Übersichtlichkeit: Das ist ein subjektives Empfinden. Es gibt Leute, die kommen mit 12 verschachtelten Schleifen besser klar als mit einer Rekursion, und es gibt Leute, bei denen es umgekehrt ist.
    Für mich ist die endrekursive Variante immernoch lesbarer als die iterative Schleife. Aber das ist wie gesagt Gewöhnungssache.
  • Wartbarkeit: Einen 4zeiler, bei dem 1 Vergleich vorkommt, ist definitiv einfacher zu warten als eine Schleife, bei der sonstwelche Variablen rumgetauscht werden.
  • geringeres Fehlerrisiko: Dieses ist bei der Rekursiven Variante immer gegeben. Rekursive Funktionen können sehr einfach bewiesen werden - Auch umformungen auf Endrekursion ect. Somit kann man auf Papier den rekursiven Ausdruck beweisen und 1:1 ins Programm übernehmen. Dies bietet definitiv weniger Fehlerpotential als eine iterative Schleife, da diese nicht so direkt von einem bewiesenermaßen korrekten Term in ein Programm überführt werden kann.
Die meisten Vorteile sind also immernoch gegeben, und die restlichen bleiben höchstens auf der Strecke des subjektiven Empfindens.

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat