对于类,我必须编写一个函数,它接受正整数 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/

10-12 00:45