lisp - 计算 lisp 中前 n 个数字的总和

标签 lisp common-lisp

(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/

相关文章:

lisp - 我应该学习 Lisp 的哪种方言?

list - 仅使用构造函数中的列表查找 Lisp 列表中的最小数字?

common-lisp - 从应用程序调用 CLIM UI

common-lisp - 实际上,REMOVE 会返回相同的序列吗?

common-lisp - Common Lisp : where is default test for MEMBER, FIND 和 POSITION 指定?

lisp - "Define"在我的 lisp 编译器(Steel Bank Common Lisp)中未定义

windows-7 - LispCabinet 读取行卡住

f# - 如果您已经了解 LISP,为什么还要学习 F#?

macros - Common Lisp Double-Backquote, Unquote, Quote, Unquote 序列?

lisp - 为什么我的 lisp 程序没有运行?