我想编写一个函数来使用尾递归来查找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