无法在Scheme中的列表中添加其他所有奇数元素

时间:2012-02-10 21:32:19

标签: list scheme racket

我正在尝试添加列表中的所有奇数元素。

我无法弄清楚出了什么问题。它将适用于所有赔率的列表,但如果甚至只有一个偶数,则会导致错误 - 它表示它期望一个数字作为第二个元素,而是传入一个列表,这不应该发生。

我的代码出了什么问题?

(define list-sum-odd
  (lambda (list)
    (cond
      ((null? list)
       0)
      ((odd? (car list))
       (+ (car list) (list-sum-odd (cdr list))))
      (list-sum-odd 
       (cdr list)))))

1 个答案:

答案 0 :(得分:6)

(list-sum-odd (cdr list))替换为(else (list-sum-odd (cdr list)))。您正在测试过程list-sum-odd是否为真(因为它不是#f,它是),然后返回(cdr list)。你需要告诉Scheme,最后一个表达式应该是else表达式。