我正在学习lisp,我正在尝试创建简单的函数来总结arr.
(defun sum( N )
( if ( null N )
nil
( + (car N ) ( sum ( cdr N )))))
(sum '(1 2 3 ))
Run Code Online (Sandbox Code Playgroud)
但它会引发错误
错误:执行:未绑定的符号:"N"[]
括号应该是正确的.为什么这会抛出错误或我的代码背后的逻辑有什么问题?
如果list为空,它将返回nil,否则,它将递归返回列表的第一个元素+其余部分.
感谢帮助
基本情况不正确,您在列表中添加数字,因此您无法返回nil,当您尝试向其添加数字时,它将失败.试试这个:
(defun sum (N)
(if (null N)
0
(+ (car N) (sum (cdr N)))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
704 次 |
| 最近记录: |