2012-02-10 8 views
0

私はリストにすべての奇数要素を追加しようとしています。スキーム内のリストの他のすべての奇数要素を追加するのに問題がある

何が間違っているかわかりません。それはすべてのオッズのリストのために働くが、単一の偶数があってもエラーを引き起こす - それは2番目の要素として数を期待していたが、代わりにリストが渡された。

私のコードで何が問題になっていますか?

(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

質問と回答が別々の行になるように、コードの書式を編集しました。言語が分かっている限り、 'list-sum-odd'は質問であり、'(cdr list) 'は答えです。しかし、われわれが知っているように、それはOPが望む意図ではありません。レトリフの答えが適用されます。 – dyoo

答えて

6

(else (list-sum-odd (cdr list)))(list-sum-odd (cdr list))を交換してください。つまり、プロシージャlist-sum-oddが真であるかどうか(#fではないため)、次に(cdr list)を返します。最後の式がelse式であるとSchemeに指示する必要があります。

関連する問題