Desidero programmare una funzione per trovare C (n, k) utilizzando la ricorsione della coda e apprezzerei molto il vostro aiuto.Coefficiente binomiale con ricorsione della coda in LISP
ho raggiunto questo:
(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)))))
Utilizzando the following property of the binomial coefficients.
Ma non so come rendere la chiamata ricorsiva come l'ultima istruzione eseguita da ogni istanza, poiché l'ultimo è il prodotto. L'ho provato utilizzando una funzione ausiliaria, che a mio avviso è l'unico modo, ma non ho trovato una soluzione.
Grazie mille. Stavo cercando una soluzione come la prima (più simile alle altre funzioni che ho realizzato o visto), ma adoro la seconda, davvero elegante. – jesusiniesta