(defun sum(n)
(cond
((= n 0) 0)
((= n 1) 1)
(T (+ n sum (- n 1)))))
如果我调用 (sum 4)
它应该显示 10 但它给我一个错误:变量 SUM 没有值
最佳答案
Common Lisp 是 Lisp-2,这意味着变量和函数位于不同的命名空间中。
有一个函数 sum
,但是没有变量 sum
将其用作变量:(+ n sum (- n 1))
。
您的意图可能是编写 (+ n (sum (- n 1)))
,递归调用函数 sum
:
(defun sum (n)
(cond ((= n 0) 0)
((= n 1) 1)
(T (+ n (sum (- n 1))))))
(如果您想将函数 sum
引用为一个值,例如将其传递给另一个函数,您可以编写 #'sum
。)
关于lisp - 计算 lisp 中前 n 个数字的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21040161/