问题是,你如何修复这段代码:
(define (buggy-sum lst)
(+ (car lst) (buggy-sum (cdr lst))))
(buggy-sum (list 1 2 3 4))
我的解决方案如下,但这是错误的:
(define (buggy-sum lst)
(cond [(null? lst) '()]
[else (+ (car lst) (buggy-sum (cdr lst)))]))
(buggy-sum (list 1 2 3 4))
有人能告诉我正确的解决方案是什么吗?
答案 0 :(得分:6)
你的边缘情况是错误的。如果列表为null,则返回另一个空列表,并且应该返回一个int。只需将[(null? lst) '()]
替换为[(null? lst) 0]
。