我正在尝试添加列表中的所有奇数元素。
我无法弄清楚出了什么问题。它将适用于所有赔率的列表,但如果甚至只有一个偶数,则会导致错误 - 它表示它期望一个数字作为第二个元素,而是传入一个列表,这不应该发生。
我的代码出了什么问题?
(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)))))
答案 0 :(得分:6)
将(list-sum-odd (cdr list))
替换为(else (list-sum-odd (cdr list)))
。您正在测试过程list-sum-odd
是否为真(因为它不是#f,它是),然后返回(cdr list)
。你需要告诉Scheme,最后一个表达式应该是else
表达式。