Ich möchte eine Funktion zu C (n, k) mit Tail-Rekursion zu finden, und ich würde Ihre Hilfe sehr zu schätzen wissen.Binomialkoeffizient mit Tail Rekursion in LISP
Ich habe dies erreicht:
(defun tail-recursive-binomial (n k)
(cond ((or (< n k) (< k 0)) NIL)
((or (= k 0) (= n k)) 1)
(T (* (tail-recursive-binomial (- n 1) (- k 1)) (/ n k)))))
Mit the following property of the binomial coefficients.
Aber ich weiß nicht, wie man den rekursiven Aufruf zum letzten Befehl macht, der von jeder Instanz ausgeführt wird, da dort das letzte das Produkt ist. Ich habe es versucht, indem ich eine Hilfsfunktion verwendet habe, was meiner Meinung nach der einzige Weg ist, aber ich habe keine Lösung gefunden.
Vielen Dank. Ich war auf der Suche nach einer Lösung wie die erste (ähnlich wie andere Funktionen, die ich gemacht oder gesehen habe), aber ich liebe die zweite, wirklich elegant. – jesusiniesta