我在LISP中定义了一个函数,并且它正确定义.但每当我尝试调用它时,我都会收到错误消息"变量FACTORIAL未绑定".
我在OS X和Windows 7上,在LispWorks和Allegro上尝试了这个.功能是 -
(defun factorial (x)
(if (= 1 x) 1
(* x factorial (- 1 x))))
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
Isa*_*aac 16
在你的代码的第三行,你乘x倍factorial倍1-x.
首先要注意的factorial是不是变量:它是一个函数.由于Common-Lisp是一个Lisp-2,因此factorial不作为一个变量绑定 - 它作为一个函数绑定.
你需要factorial在一个x不x小于一个上调用该函数.
所以:
(defun factorial (x)
(if (= 1 x) 1
(* x (factorial (- x 1)))))
Run Code Online (Sandbox Code Playgroud)
......应该这样做.
看起来你错过了一组括号:
(defun factorial (x)
(if (= 1 x) 1
(* x (factorial (- 1 x)))))
Run Code Online (Sandbox Code Playgroud)
没有()周围factorial,Lisp认为你指的是变量而不是函数.