-3
(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]> 
4

1 回答 1

1

考虑到您提供的错误代码,您似乎正在使用一个名为的变量,该变量SUM.LISP没有实际值/未在某个点定义。在您的代码中搜索该变量名称,并确保它始终被正确定义并在范围内。如需更多信息,需要更多源代码。


由于您引用的功能很可能无法正常工作,因此我实现了一个固定版本:

(defun recursive-sum (L)
   (if L
      (+ (car L) (recursive-sum (cdr L))) 
      0))

如评论中所述,您将每次调用的给定列表减少一个元素。

于 2012-11-19T02:11:07.437 回答