lisp,递归求和函数

时间:2012-11-15 04:37:27

标签: common-lisp

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

1 个答案:

答案 0 :(得分:1)

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


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

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

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