我正在学习lisp,我正在尝试创建简单的函数来总结arr。
(defun sum( N )
( if ( null N )
nil
( + (car N ) ( sum ( cdr N )))))
(sum '(1 2 3 ))
但它会抛出错误
错误:执行:未绑定符号:" N" []
括号应该是正确的。为什么这会抛出错误或我的代码背后的逻辑有什么问题?
如果list为空,它将返回nil,否则,它将以递归方式返回列表的第一个元素+其余部分。
感谢您的帮助
答案 0 :(得分:9)
基本情况不正确,您在列表中添加数字,因此您无法返回nil
,当您输入时,它会失败尝试添加一个数字。试试这个:
(defun sum (N)
(if (null N)
0
(+ (car N) (sum (cdr N)))))