2016-10-02 5 views
-4

Gibt es irgendwelche praktischen Probleme, bei denen Rekursion entweder die beste Lösung oder sogar die einzige Lösung ist? Hier impliziert ich, dass der Entwickler einer realen Anwendung die begleitenden Probleme der Stapelgröße, des Stapelüberlaufs usw. auf dem Zielsystem behandeln sollte.Praktische Anwendung der Rekursion

Update: Darf meine Frage falsch formuliert sein. Ich weiß, dass es Probleme gibt, die durch Rekursion gelöst werden könnten. Ich nehme jedoch an, in der realen Welt sollte der Coder irgendwie Probleme behandeln, die mit der rekursiven Lösung zusammenhängen: zum Beispiel Stapelüberlauf. Es kann schwierig sein, Zielsystemparameter zu bestimmen. So kann ich zum Beispiel annehmen, dass jemand Rekursion vermeiden sollte, wenn es bei komplexen Problemen möglich ist.

+4

Ihre umfangreiche Forschung konnte * keine * solche Probleme finden? –

+0

Hanoi Türme. Vergleichen Sie rekursive und iterative. – Nf4r

+0

Diese Frage ist zu breit, aber dies könnte ein guter Ausgangspunkt sein: https://en.wikipedia.org/wiki/Tail_call Sobald Sie Rekursion anwenden können, ohne neue Stapelrahmen hinzuzufügen, ist der Himmel das Limit. – TheInnerLight

Antwort

0

Es kommt darauf an, was Sie meinen. Rekursion, Stapel und Bäume sind eng miteinander verbunden. Wenn wir eine Operation mit baumartigen Daten durchführen, müssen wir irgendwo einen Stack haben, den wir pushen und knacken, und wir gehen den Baum auf und ab.

Es ist jedoch immer möglich, diesen Stapel in der Computerprogrammiersprache, die Sie gerade verwenden, vom Aufrufstapel zu entfernen. Oft ist es viel bequemer, einfach den Aufrufstapel zu verwenden, aber einige Sprachen erlauben keine rekursiven Funktionen, und in C ist es unmöglich, den Aufrufstapel vor einem Überlauf zu schützen. Aber Sie werden die Rekursion nicht los, Sie bewegen den Stapel einfach woanders hin.

Verwandte Themen