Исследование хвостовой рекурсии в вычислителе
С помощью отслеживания стека исследуйте хвостовую рекурсию в нашем вычислителе (раздел 5.4.2). Запустите вычислитель и определите итеративную процедуру factorial из раздела 1.2.1:
(define (factorial n)
(define (iter product counter)
(if (> counter n)
product
(iter (* counter product)
(+ counter 1))))
(iter 1 1))
Запустите эту процедуру с несколькими небольшими значениями n . Для каждого из этих значений запишите максимальную глубину стека и количество операций сохранения, потребных для вычисления n! .
а. Вы увидите, что максимальная глубина стека, нужная для вычисления n! , от n не зависит. Какова эта глубина?
б. Составьте на основе своих данных формулу в зависимости от n числа операций сохранения, необходимых для вычисления n! для любого n ≥ 1 . Обратите внимание, что число операций — линейная функция от n и, следовательно, определяется двумя константами.
Комментарии отсутствуют.