Я работаю над How to Design Programs самостоятельно. Я не совсем разобрался со сложной линейной рекурсией, поэтому мне нужна помощь.
Задача:
Определите multiply
, который потребляет два натуральных числа, n
и x
, и производит n * x
без использования *
Scheme. Исключите +
из этого определения.
Проще со знаком +:
(define (multiply n m)
(cond
[(zero? m) 0]
[else (+ n (multiply n (sub1 m)))]))
(= (multiply 3 3) 9)
Я знаю, что нужно использовать add1
, но я не могу сделать рекурсию правильно.
Спасибо.