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

0 scheme list 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)))))
Run Code Online (Sandbox Code Playgroud)

Ret*_*ief 6

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