Lisp未绑定符号

时间:2016-12-07 22:07:29

标签: lisp common-lisp

我正在学习lisp,我正在尝试创建简单的函数来总结arr。

(defun sum( N )
    ( if ( null N )
         nil
         ( + (car N ) ( sum ( cdr N )))))

(sum '(1 2 3 ))

但它会抛出错误

  

错误:执行:未绑定符号:" N" []

括号应该是正确的。为什么这会抛出错误或我的代码背后的逻辑有什么问题?

如果list为空,它将返回nil,否则,它将以递归方式返回列表的第一个元素+其余部分。

感谢您的帮助

1 个答案:

答案 0 :(得分:9)

基本情况不正确,您在列表中添加数字,因此您无法返回nil,当您输入时,它会失败尝试添加一个数字。试试这个:

(defun sum (N)
  (if (null N)
      0
      (+ (car N) (sum (cdr N)))))