对于类,我必须编写一个函数,它接受正整数 n 并返回方案中 n 的奇数位之和。到目前为止,我的基本情况是,如果 n 等于 0,则为 0。但我不确定如何继续。
(define sumOddDigits
(lambda (n)
(if (= n 0)
0
测试用例:
(sumOddDigits 0) → 0
(sumOddDigits 4) → 0
(sumOddDigits 3) → 3
(sumOddDigits 1984) → 10
最佳答案
您可以使用一个功能循环有效地完成它:
(define (sumOddDigits n)
(let loop ([n n])
(cond [(zero? n) 0]
[else
(let-values ([(q r) (quotient/remainder n 10)])
(+ (if (odd? r) r 0)
(loop q)))])))
关于racket - 返回一个数的奇数之和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40229379/