tail-recursion

Die Tail-Rekursion ist eine rekursive Strategie, bei der eine Funktion eine gewisse Menge an Arbeit ausführt und sich dann selbst aufruft. Der "Schwanz" bezieht sich auf die Tatsache, dass die Rekursion am Ende der Funktion ist. Viele - insbesondere funktionale - Programmiersprachen-Compiler können diese Arten von Aufrufen in Iteration umwandeln, was bedeutet, dass die Tail-Rekursion in unterstützten Sprachen ohne Angst vor einem Stack-Überlauf verwendet werden kann, unabhängig von der Anzahl der Aufrufe.
2
Antworten

Scala recursion vs loop: Überlegungen zu Leistung und Laufzeit

Ich habe ein naives Test-Bett geschrieben, um die Leistung von drei Arten von faktorieller Implementierung zu messen: Schleifen-basiert, nicht-tail-rekursiv und tail-rekursiv.    Überraschenderweise war der schlechteste performant die Loop-...
28.02.2013, 14:56
2
Antworten

Warum ist diese F # Sequenzfunktion nicht tail rekursiv?

Offenlegung: Dies kam in FsCheck, einem F # Random Testing Framework, das ich behalte. Ich habe eine Lösung, aber ich mag sie nicht. Außerdem verstehe ich das Problem nicht - es wurde lediglich umgangen. Eine ziemlich standardisierte Implemen...
30.05.2011, 20:24
2
Antworten

Konvertieren einer Funktion zur Verwendung der Tail-Rekursion - eine formale Studie

Hat jemand ein formelles Papier geschrieben, in dem eine Methode beschrieben wird, um (automatisch) Funktionen zu rekursiv zu machen? Ich suche nach einer formellen Behandlung auf Universitätsebene, einschließlich der Einschränkungen (Arten von...
22.05.2012, 11:06
2
Antworten

Warum erstellt der F # -Compiler keinen Tail-Aufruf für diese Funktion?

Ich habe Probleme mit dem Fixpunktkombinator in F #: %Vor% (Dieser Code soll nur das Problem demonstrieren, er wurde speziell geschrieben, damit der generierte IL-Code leicht zu lesen ist.) Dieser Code - wenn er mit optimierten Optimierun...
18.04.2015, 18:02
2
Antworten

Braucht die Tail-Rekursion unbedingt einen Akkumulator?

Zum Beispiel, da die folgende Funktion keinen Akkumulator hat, ist es immer noch rekursiv? %Vor% Alle Berechnungen in der Funktion werden vor dem rekursiven Aufruf verarbeitet, ist es eine hinreichende Bedingung, um als tail rekursiv zu gelt...
18.12.2012, 19:47
1
Antwort

Verstehen von F # tail-recursive

Kürzlich lerne ich F #. Ich versuche das Problem auf verschiedene Arten zu lösen. So: %Vor% Ich dachte, die Ergebnisse von V2 und V3 sollten gleich sein. Aber ich bekomme das Ergebnis unten: %Vor% Warum sind die Ergebnisse von V2 und V3...
01.06.2010, 08:21
2
Antworten

Clojure warning / Fehler bei Tail-Call-Optimierung fehlgeschlagen

In Scala 2.8.x wurde eine neue Annotation ( @tailrec ) hinzugefügt, die einen Kompilierungsfehler ergibt, wenn der Compiler keine Tail-Call-Optimierung für die mit Annotationen versehene Methode durchführen kann. Gibt es eine ähnliche Einri...
26.04.2010, 11:08
4
Antworten

Abwickeln des Rahmens, aber nicht in C zurückkehren

Meine Programmiersprache kompiliert nach C, ich möchte Tail Recursion-Optimierung implementieren. Die Frage hier ist, wie die Kontrolle an eine andere Funktion übergeben wird, ohne von der aktuellen Funktion "zurückzukehren". Es ist ziemlich...
06.02.2018, 15:29
1
Antwort

Scalabaumrekursive Faltungsmethode

Gegeben die folgende Definition für einen (nicht binären) Baum: %Vor% Ich habe die folgende Methode fold geschrieben: %Vor% das kann unter anderem für diese map Methode verwendet werden: %Vor% Frage: Kann mir jemand helfen, wie m...
05.03.2015, 02:08
1
Antwort

Ist dieser Code tail-rekursiv?

Ich versuche eine Lösung für AdventCode Tag 6 in Prolog zu schreiben. ( Ссылка ) Zuvor habe ich eine Lösung geschrieben, die Prädikate dynamisch erstellt und ersetzt, um die Lichter im Auge zu behalten. Es ist nicht überraschend, dass es ziem...
25.12.2015, 19:52