Ich komme aus einem funktionalen Programmierhintergrund und denke zuerst über rekursive Lösungen für Probleme statt iterative Lösungen. Ich fange an, mit Rebol ein bisschen zu arbeiten (speziell R3) und habe eine Lösung für den Primfaktor Kata geschrieben, indem ich eine tailrekursive Funktion mit einem Akkumulator benutze. Aber bei genügend großem Input blase ich den Stack. Ich habe ein Skript für Rebol2 namens "tail-func.r", das eine Version der Tail-Call-Optimierung implementiert, dass AFAIK nicht nach R3 portiert wurde. Ich weiß, dass Rebol 3 in vielen Fällen Dinge anders als R2 implementiert, also gibt es eine Möglichkeit, TCO in Rebol 3 ohne zusätzlichen Code zu bekommen? Wenn nicht, gibt es einen einfacheren Weg, um es zu bekommen, ohne das alte Skript zu portieren?Rebol Tail Call Optimierung
Edited meinen Code hinzuzufügen:
primefactors: function [n m factors] [
either n > 1
[ either (modulo n m) == 0
[ primefactors (n/m) m (append factors m) ]
[ primefactors n (m + 1) factors ] ]
[ factors ]
]
primefactors 30 2 (copy []) => [2 3 5]
Können Sie ein einfaches Code-Snippet als Beispiel angeben? – johnk
Sicher, ich habe meine Beispiel-Primfaktor-Implementierung hinzugefügt. – teyvk