我想編寫一個函數來使用尾遞歸來查找C(n,k),我將非常感謝您的幫助。在LISP中使用尾遞歸的二項式係數
我已經達到了這一點:
(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)))))
使用the following property of the binomial coefficients。
但我不知道如何使遞歸調用成爲每個實例執行的最後一條指令,因爲最後一條指令是產品。我一直在嘗試使用輔助函數,我認爲這是唯一的方法,但我還沒有找到解決方案。
非常感謝。我正在尋找像第一個這樣的解決方案(更類似於我製作或看到的其他功能),但我喜歡第二個,非常優雅。 – jesusiniesta 2010-10-31 13:39:54