我是Scheme的新手,我已經花了大約一週的時間了。頂級列表中所有數字的總和
編寫一個Lisp函數列表,其中包含一個列表並返回列表中所有數字之和的頂級函數。因此, (sumlist'(1 2(3)(4a)nil b 5))應該返回1 + 2 + 5 = 8。數字3和4不在頂層。使用數字?檢查的事情是一個數字。」
這是我到目前爲止,它可以識別的東西是否是一個數字或沒有,但我不能得到它僅加起來的數字頂級
(define (sumlist lst)
(cond ((null? lst) 0)
((number? lst) lst)
((list? lst)
(+ (sumlist (car lst)) (sumlist (cdr lst))))
(#t 0)))
; no values returned
> (sumlist '(1 2 (3) (4 a) nil b 5))
15
任何幫助表示讚賞
編輯:。。無論絕地的和丹尼爾的回答工作,謝謝兩位非常
如果您只關心頂層,則不需要遞歸到「(汽車1)」。 – Barmar