Максимальная глубина стека и общее число сохранений, требуемых для вычисления n!
Для сравнения с упражнением 5.26 , изучите поведение следующей процедуры для рекурсивного вычисления факториала:
(define (factorial n)
(if (= n 1)
1
(* (factorial (- n 1)) n)))
Запуская эту процедуру и отслеживая поведение стека, определите как функции от
n
максимальную глубину стека и общее число сохранений, требуемых для вычисления
n!
, при
n ≥ 1
. (Эти функции также будут линейны.) Опишите общие результаты экспериментов, записав в следующую таблицу соответствующие выражения как формулы, зависящие от
n
:
Максимальная глубина служит мерой объема памяти, используемой вычислителем при обработке выражения, а количество сохранений хорошо коррелирует со временем вычисления.
Комментарии отсутствуют.