Rekursion VS Iteration.



  • Klingt nach premature optimization. Rekursion bietet sich bei vielen komplizierteren Problemen direkt an, ist oft einfacher zu implementieren, und führt schneller zu funktionierendem Code als Iteration. Natürlich nur, wenn man Rekursion überhaupt verstanden hat und nicht von vornherein als langsam abtut! Wenn sich der entsprechende Code im nachhinein als performancetechnisches Nadelöhr herausstellt, kann man immer noch versuchen, daraus ne Iteration zu machen.

    Man sollte sich nicht von den üblichen Anfängerbeispielen (Fakultät, Fibonacci, Länge einer einfach verketteten Liste, etc.), bei denen tatsächlich besser Iteration angebracht wäre, täuschen lassen.



  • aus dir spricht der CLer 🕶



  • @Bashar:
    ich denke, es ist besser wenn man zuerst versucht das ganze iterativ zu bauen. stoesst man da auf schwierigkeiten, schaut man nach ob es rekursiv einfacher geht.

    geht es rekursiv und iterativ gleich schwer, nimmt man iterativ.

    (das ist mein schema, an das ich mich halte)



  • Original erstellt von <Donald E. Knuth>:
    aus dir spricht der CLer 🕶

    inwiefern?



  • er ist ja nichtmal bereit auf do zu verzichten, um tail-recursion nutzen zu können 😃



  • to iterate is human, to recurse divine
    sach ich nur



  • "divine" -- hehe, klingt nach religiöser Verblendung. Scheme-Fanatiker 🙂



  • hmm... _deshalb_ fällt es mir immer relativ schwer, prozeduren tail-recursive statt iterativ zu schreiben... hat jemand nen geisteraustreiber zu hand?



  • Hallo

    Durch Rekursion kann häufig schöner, kompakter und intuitiv verständlicher Code erzeugt werden, vorausgesetzt natürlich das Problem lässt eine sinnvolle rekursive Definition zu. Leider wird sie immer als grundsätzlich schlecht weil langsam deklariert.

    Wäre es nichtmal an der Zeit ein paar Tests bzgl. der Geschwindigkeit von rekursivem Code zu machen ? Solche Tests hatten wir ja schon häufiger hier.
    Aber eben keine Fakultäten berechnen sondern etwas mit Bäumen oder Graphen.

    space



  • Wer sagt, dass Rekursion immer schlecht ist? Mal von Shade und dem OP - der sich auf Shade bezieht - abgesehen? Wenn ich nen Parser recd (recursive-descent) schreiben kann, dann tu ich das auch.


Anmelden zum Antworten