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.



19
Wie breche ich in Scala aus einer Schleife aus?
Wie breche ich eine Schleife aus? var largest=0 for(i<-999 to 1 by -1) { for (j<-i to 1 by -1) { val product=i*j if (largest>product) // I want to break out here else if(product.toString.equals(product.toString.reverse)) largest=largest max product } } Wie verwandle ich verschachtelte for-Schleifen in Schwanzrekursion? Aus Scala Talk auf …

20
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 sind, dass diese Frage verbessert und möglicherweise erneut geöffnet werden kann, …

6
Optimiert Python die Schwanzrekursion?
Ich habe den folgenden Code, der mit dem folgenden Fehler fehlschlägt: RuntimeError: Maximale Rekursionstiefe überschritten Ich habe versucht, dies neu zu schreiben, um die Optimierung der Schwanzrekursion (TCO) zu ermöglichen. Ich glaube, dass dieser Code erfolgreich gewesen sein sollte, wenn eine TCO stattgefunden hätte. def trisum(n, csum): if n == …


8
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 return fac_times(n …


5
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 grundlegende Einschränkung der JVM). Ist das wahr? Wenn …

5
Führt Ruby eine Tail Call-Optimierung durch?
Funktionale Sprachen führen zur Verwendung von Rekursion, um viele Probleme zu lösen, und daher führen viele von ihnen eine Tail Call Optimization (TCO) durch. TCO bewirkt, dass Aufrufe einer Funktion von einer anderen Funktion (oder von sich selbst. In diesem Fall wird diese Funktion auch als Tail Recursion Elimination bezeichnet, …





3
Sind Funktionen in JavaScript Tail Call optimiert?
Ich habe versucht zu verstehen Tail call optimization im Kontext von JavaScript und habe die folgenden rekursiven und schwanzrekursiven Methoden für geschrieben factorial(). Rekursiv: function factorial (n) { if (n < 2) { return 1; } else { return n * factorial(n-1); } } Schwanzrekursiv: function factorial (n) { function …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.