设计一个名为 findProperDivisor
的 Racket 函数,它接受一个自然数并计算其所有适当除数的总和。自然数的真约数是严格小于该数的约数。
例子:
输入:20
输出:22
//适当的约数:1 + 2 + 4 + 5 + 10 = 22
(define (sum-of-proper-divisors n i)
(cond [(= i 1) 1]
[(= (remainder n i) 0)
(+ i (sum-of-proper-divisors n (sub1 i)))]
[else (sum-of-proper-divisors n (sub1 i))]))
我在这个页面上找到了这个代码,但它给了我 1+2+4+5+10+20=42
我需要 22
。
我想通过使用递归和cond
用一个参数编写这段代码。我使用的是初级学生语言 (BSL),它没有定义 let
之类的东西。
最佳答案
第 1 步:了解代码的作用。为什么会有一个额外的参数?它发生了什么?
第 2 步:如何调用它?这对 i
意味着什么?
第 3 步:您必须采取哪些不同的操作才能不根据数字本身检查余数?
关于scheme - 计算 Racket BSL 中给定数字的适当除数之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53191186/