(defun recursive-sum (L)
(if (null L)
0
(+ (first L) (recursive-sum L))))
我的代码片有什么问题?
我收到此错误消息:
*** - SYSTEM::READ-EVAL-PRINT: variable SUM.LISP has no value
The following restarts are available:
USE-VALUE :R1 Input a value to be used instead of SUM.LISP.
STORE-VALUE :R2 Input a new value for SUM.LISP.
ABORT :R3 Abort debug loop
ABORT :R4 Abort debug loop
ABORT :R5 Abort main loop
Break 3 [5]>
答案 0 :(得分:1)
考虑到您提供的错误代码,您似乎正在使用名为SUM.LISP
的变量,该变量没有实际值/未在某个点定义。在代码中搜索该变量名称,并确保始终正确定义并在范围内。有关更多信息,需要更多源代码。
由于您引用的功能很可能无法正常工作,因此我实施了固定版本:
(defun recursive-sum (L)
(if L
(+ (car L) (recursive-sum (cdr L)))
0))
其中,如评论中所述,您将每个调用的给定列表减少一个元素。