Als «tail-recursion» getaggte Fragen

Die Schwanzrekursion ist eine rekursive Strategie, bei der eine Funktion einige Arbeit erledigt und sich dann selbst aufruft. Der "Schwanz" bezieht sich auf die Tatsache, dass die Rekursion ganz am Ende der Funktion steht. Viele - insbesondere funktionale - Programmiersprachen-Compiler können diese Arten von Aufrufen in Iteration umwandeln, was bedeutet, dass die Schwanzrekursion in unterstützten Sprachen unabhängig von der Anzahl der Aufrufe ohne Angst vor einem Stapelüberlauf verwendet werden kann.

224
Rekursion verstehen [geschlossen]

Diese Frage passt derzeit nicht zu unserem Q & A-Format. Wir erwarten, dass die Antworten durch Fakten, Referenzen oder Fachwissen gestützt werden, aber diese Frage wird wahrscheinlich zu Debatten, Argumenten, Umfragen oder erweiterten Diskussionen führen. Wenn Sie der Meinung...

121
Wie genau funktioniert die Schwanzrekursion?

Ich verstehe fast, wie die Schwanzrekursion funktioniert und welchen Unterschied sie zu einer normalen Rekursion hat. Ich verstehe nur nicht, warum es keinen Stapel erfordert, um sich seine Absenderadresse zu merken. // tail recursion int fac_times (int n, int acc) { if (n == 0) return acc; else...

99
Verhindert die JVM Tail-Call-Optimierungen?

Ich habe dieses Zitat auf der Frage gesehen: Was ist eine gute funktionale Sprache, auf der ein Webdienst aufgebaut werden kann? Insbesondere Scala unterstützt die Eliminierung von Tail-Calls nur in selbstrekursiven Funktionen, wodurch die Art der Komposition eingeschränkt wird (dies ist eine...

8
Wann ist die Schwanzrekursion in Rust garantiert?

C Sprache In der Programmiersprache C ist es einfach, eine Schwanzrekursion durchzuführen : int foo(...) { return foo(...); } Geben Sie einfach den Rückgabewert des rekursiven Aufrufs zurück. Es ist besonders wichtig, wenn sich diese Rekursion tausend- oder sogar millionenfach wiederholen kann. Es...