数値の約数を数える関数の作成に取り組んでいます。たとえば、4 には 3 つの約数があります。次のようにヘルパー関数を作成しました。
(define (divisors-upto n k)
(cond((= k 0) 0)
((= n 0) 0)
((= k 1) 1)
((divides k n) (+ 1 (divisors-upto n (- k 1))))
(else (divisors-upto n (- k 1)))))
しかし、次の機能では、ヘルパー機能を適切に利用するのに問題があります。次の関数は除数のカウントに使用できますか?
(define ( divisors n ) ( divisors-upto n n ))