1

我明天要考试,这是我做错的作业题。我已经被困了一段时间了,有人可以告诉我解决方案是什么吗?

问题是,您如何修复此代码:

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

有人可以告诉我正确的解决方案是什么吗?

4

1 回答 1

5

你的边缘情况是错误的。如果列表为空,您将返回另一个空列表,并且您应该返回一个 int。只需替换[(null? lst) '()][(null? lst) 0].

于 2013-04-21T17:33:41.790 回答