2012-02-10 68 views
0

列表中的每個其他奇數元素時遇到困難我試圖添加列表中的所有奇怪的元素。我想不出什麼是錯的。它將適用於所有可能性的列表,但是如果甚至存在單個偶數,則會導致錯誤 - 它表示它期望一個數字作爲第二個元素,但是傳入了一個列表,這不應該發生。遇到添加計劃

我的代碼有什麼問題?

(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 2012-02-11 03:55:49

回答

6

(list-sum-odd (cdr list))替換爲(else (list-sum-odd (cdr list)))。因爲您正在測試程序list-sum-odd是否爲真(因爲它不是#f),然後返回(cdr list)。您需要告訴Scheme最後一個表達式應該是else表達式。