【发布时间】:2016-01-23 06:15:02
【问题描述】:
嗯,我对 Common Lisp 编程语言完全陌生,我从昨天开始自己学习这门语言,这太出于兴趣了。现在,当我遇到函数和循环时,在了解了它们之后,我开始开发Common Lisp 中的素数问题。 我的代码如下:
(defun prime (num)
(setq c 1)
(setq a 2)
(loop
(setq a (+ 1 a))
(if (= (mod num a) 0)
(setq c (+ c 1))
)
(when (> (+ a 1) 17) (return a))
)
)
(if (= c 1)
(return-from prime num)
)
)
(loop for x from 1 to 20
do (prime x)
)
现在我使用这段代码面临的问题是,每当我尝试执行这段代码时,我得到的错误如下:
***IF: 变量 C 没有值
但我已经为 c 声明了一个值,它仍然出现。所以我只想知道为什么这个错误会出现,即使我已经声明了它。
【问题讨论】:
-
在任何编程语言中,您都需要对代码进行格式化和缩进以使其可读。在 Lisp 中也是如此。请不要将未格式化的代码放入问题中。
-
@user242453
(setq a (+ 1 a)),可以替换为(incf a)。还有一个1+函数用于编写(+ 1 _)
标签: common-lisp