首页 > 解决方案 > 编写奇数的Scheme过程总和

问题描述

编写一个 Scheme 过程,它接受一个列表并返回列表中奇数的总和。例如, (sumodd '(1 (2 () 6) 3 (5) 2)) 返回 9

这是我的代码

(define (sumodd ls)
(cond ((null? ls) 0)
      ((list? (car ls)) (sumodd (car ls)))
      ((= (modulo (car ls) 2) 1)) (+ (car ls) (sumodd (cdr ls)))
      (else (sumodd (cdr ls)))))

我尽力了,但无法得到正确的答案。

标签: schemeracketprocedure

解决方案


在他的第二个任期内,您检查car列表的 是否是列表。例如。((5) 3 1). (3 1)当你只对列表求和时会发生什么(5)?逻辑不应该是将sumoddandcar的结果加在一起cdr吗?


推荐阅读