2012-11-15 114 views
-3
(defun recursive-sum (L) 
    (if (null L) 
    0 
    (+ (first L) (recursive-sum L)))) 

我的代碼片有什麼問題?lisp,遞歸求和函數

我得到這個錯誤信息:

*** - 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

這個問題是downvoted和關閉,因爲錯誤消息和代碼看起來不相關。該問題未能顯示用戶實際上做了什麼。 –

回答

1

考慮到你所提供的錯誤代碼,好像你正在使用一種叫做SUM.LISP它沒有實際值的變量/不是在某一個點來定義。在您的代碼中搜索該變量名稱,並確保它始終正確定義並在範圍內。欲瞭解更多信息,需要更多的源代碼。


正如你報將最有可能無法正常工作的正常運行,我實現一個固定的版本:

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

其中,作爲在評論中提到的,你一個元素減少給定列表中的每個電話。