Frage

Ich versuche, die Arbeit mit Beispielen auf Bäume zu tun, wie hier angegeben: http: // cslibrary. stanford.edu/110/BinaryTrees.html Diese Beispiele alle Probleme über Rekursion lösen, ich frage mich, ob wir eine iterative Lösung für jeden einzelnen von ihnen bieten kann, was bedeutet, können wir immer sicher sein, dass ein Problem, das durch Rekursion gelöst werden kann, wird auch eine iterative Lösung haben, im Allgemeinen. Wenn nicht, welches Beispiel können wir geben, ein Problem zu zeigen, die nur gelöst werden können durch Rekursion / Iteration?

-

War es hilfreich?

Lösung

Der einzige Unterschied zwischen Iteration und Rekursion auf einem Computer, ob Sie die eingebaute Stack oder einen benutzerdefinierten Stack verwenden. So sind sie gleichwertig.

Andere Tipps

Nach meiner Erfahrung der meisten rekursiven Lösung kann in der Tat iterativ gelöst werden.

Es ist auch eine gute Technik zu haben, als rekursive Lösungen haben einen zu großen Aufwand in Speicher- und CPU-Verbrauch.

Da Rekursion einen impliziten Stapel verwendet, auf das es Informationen zu jedem Aufruf speichert, können Sie immer, dass Stapel selbst implementieren und die rekursive Aufrufe vermeiden. Also ja, kann jede rekursive Lösung in einem iterativen verwandelt werden.

für einen Beweis href="https://stackoverflow.com/questions/2093618/can-all-iterative-algorithms-be-expressed-recursively">.

Rekursion und Iteration sind zwei Werkzeuge, die auf einem sehr grundlegenden Niveau, das gleiche tun: Ausführen einer wiederholten Operation über einen definierten Satz von Werten. Sie sind austauschbar, dass es kein Problem ist, das nicht kann, in einig Art und Weise, nur um von ihnen ein gelöst werden. Das bedeutet nicht, jedoch, dass man nicht mehr kann als die anderen geeignet sein.

Rekursion hat den Vorteil, wo es ohne bekanntes Ende fortsetzen wird. Ein perfektes Beispiel dafür ist ein abgestimmter und Gewinde Sortieren Schnell.

Sie können nicht Laich zusätzliche Loops, aber Sie können neue Themen über Rekursion laichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top