我的LISP如何作为未绑定的变量?

ste*_*ing 10 lisp common-lisp

我在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

在你的代码的第三行,你乘xfactorial1-x.

首先要注意的factorial是不是变量:它是一个函数.由于Common-Lisp是一个Lisp-2,因此factorial不作为一个变量绑定 - 它作为一个函数绑定.

你需要factorial在一个xx小于一个上调用该函数.

所以:

(defun factorial (x)
   (if (= 1 x) 1
       (* x (factorial (- x 1)))))
Run Code Online (Sandbox Code Playgroud)

......应该这样做.


Gre*_*ill 5

看起来你错过了一组括号:

(defun factorial (x) 
   (if (= 1 x) 1 
       (* x (factorial (- 1 x))))) 
Run Code Online (Sandbox Code Playgroud)

没有()周围factorial,Lisp认为你指的是变量而不是函数.

  • @Isaac Hodes:我也看到了,但我想我会把它作为OP的练习.:) (3认同)