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 になったときに関数の評価を停止する制限をどのように設定しますか?