gpt4 book ai didi

lisp - 我的 LISP 函数如何成为未绑定(bind)变量?

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:04 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com