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.
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
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
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
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
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
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
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
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
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
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