我想知道如何编写一个函数来计算大于 1 的整数的适当除数之和。
(define (sum-of-proper-divisors n)
(cond
[(= n 1) 1]
[(= 0 (remainder n (sub1 n)))
(+ (remainder n (sub1 n)) (sum-of-proper-divisors (sub1 (sub1 n))))]
[else (sum-of-proper-divisors (sub1 n))]))
这是我写的代码,但是,它不起作用。它永远不会停止评估,因为它总是会做 n-1。而且我不知道如何解决这个问题。此外,可能还有其他问题。当除数变为 1 时,如何设置使函数停止计算的限制?