List 在Scheme的列表中添加其他奇数元素时遇到问题
我正在尝试添加列表中所有的奇数元素 我想不出是怎么回事。它将适用于所有赔率的列表,但如果存在一个偶数,则会导致错误。它表示它希望将一个数字作为第二个元素,但实际上传递了一个列表,这不应该发生 我的代码有什么问题List 在Scheme的列表中添加其他奇数元素时遇到问题,list,scheme,racket,List,Scheme,Racket,我正在尝试添加列表中所有的奇数元素 我想不出是怎么回事。它将适用于所有赔率的列表,但如果存在一个偶数,则会导致错误。它表示它希望将一个数字作为第二个元素,但实际上传递了一个列表,这不应该发生 我的代码有什么问题 (define list-sum-odd (lambda (list) (cond ((null? list) 0) ((odd? (car list)) (+ (car list) (list-sum-odd (cdr l
(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)))))
将
(单数和列表(cdr列表))
替换为(其他(单数和列表(cdr列表)))
。按原样,您正在测试过程list sum odd
是否为真(因为它不是#f,它是真的),然后返回(cdr list)
。您需要告诉Scheme最后一个表达式应该是else
表达式。将(list sum odd(cdr list))
替换为(else(list sum odd(cdr list))
。按原样,您正在测试过程list sum odd
是否为真(因为它不是#f,它是真的),然后返回(cdr list)
。您需要告诉Scheme最后一个表达式应该是else
表达式。我已经编辑了代码的格式,以便问题和答案在单独的行中。就语言所知,list sum odd
应该是问题的答案,而(cdr list)
是答案。但我们知道,这不是OP想要的意图。Retief的答案适用。我已经编辑了代码的格式,以便问题和答案在单独的行中。就语言所知,list sum odd
应该是问题的答案,而(cdr list)
是答案。但我们知道,这不是OP想要的意图。雷蒂夫的答案适用。