我在 LISP 中定义了一个函数,它定义正确。但是每当我尝试调用它时,我都会收到一条错误消息,提示“变量 FACTORIAL 未绑定(bind)”。
我已经在 OS X 和 Windows 7 的 LispWorks 和 Allegro 上尝试过这个。函数是——
(defun factorial (x)
(if (= 1 x) 1
(* x factorial (- 1 x))))
感谢任何帮助。
最佳答案
在代码的第三行,您将 x
乘以 factorial
乘以 1-x
。
首先要注意的是 factorial
不是一个变量:它是一个函数。由于 Common-Lisp 是 Lisp-2,所以阶乘根本没有被绑定(bind)为变量——它被绑定(bind)为函数。
您需要在小于 x
的情况下调用 factorial
函数,而不是 x
小于 1。
所以:
(defun factorial (x)
(if (= 1 x) 1
(* x (factorial (- x 1)))))
……应该这样做。
关于lisp - 我的 LISP 函数如何成为未绑定(bind)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3605453/