A reddit thread вызвал, по-видимому, интересный вопрос:
Рекурсивные функции хвоста могут быть тривиально преобразованы в итерационные функции. Другие могут быть преобразованы с использованием явного стека. Можно ли преобразовать каждую рекурсию в итерацию?
Пример (счетчик?) в сообщении - это пара:
(define (num-ways x y)
(case ((= x 0) 1)
((= y 0) 1)
(num-ways2 x y) ))
(define (num-ways2 x y)
(+ (num-ways (- x 1) y)
(num-ways x (- y 1))