对于类,我必须编写一个函数,该函数接受正整数 n 并返回方案中 n\xe2\x80\x99s 奇数位的总和。到目前为止,我的基本情况是,如果 n 等于 0,则 0。但我不确定如何继续。
\n\n(define sumOddDigits\n (lambda (n)\n (if (= n 0)\n 0\nRun Code Online (Sandbox Code Playgroud)\n\n测试用例:
\n\n(sumOddDigits 0) \xe2\x86\x92 0\n(sumOddDigits 4) \xe2\x86\x92 0\n(sumOddDigits 3) \xe2\x86\x92 3\n(sumOddDigits 1984) \xe2\x86\x92 10\nRun Code Online (Sandbox Code Playgroud)\n
您可以使用一个功能循环有效地完成此操作:
(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)))])))
Run Code Online (Sandbox Code Playgroud)