Разработайте функцию Racket с именем findProperDivisor
, которая принимает натуральное число и вычисляет сумму всех ее соответствующих делителей. Правильный делитель натурального числа - это делитель, который строго меньше числа.
Примеры:
Ввод: 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
.