Пройдя через HtDP и столкнувшись с проблемой, которая была: Разработайте функцию умножить. Он потребляет натуральное число n и умножает его на некоторое произвольное число x без использования *.Можно ли это превратить в хвостовую рекурсивную функцию?
Это то, что я придумал:
(define (multiply n x)
(cond
[(= x 1) n]
[else (+ n (multiply n (- x 1)))]))
Это работает, но я думаю, что это не самое лучшее решение. Поскольку это можно было бы решить как цикл for, основанный на моем понимании, это должно быть хвостовым рекурсивным.