Ответ как последний кадр процесса
Две процедуры могут вычислять одну и ту же математическую функцию, порождая совершенно разные вычислительные процессы.
Чем рекурсивный процесс отличается от итеративного?
- Различение рекурсивного синтаксиса и роста рекурсивного процесса
- Распознавание явного состояния, переносимого итеративным процессом
- Использование трассы выполнения с фиксированным пределом для исследования формы процесса
Рекурсивная версия откладывает умножение до тех пор, пока не вернется меньший factorial. Объем отложенной работы растет с ростом n. Итеративная версия переносит промежуточное произведение и счетчик как полное состояние.
Оба определения являются рекурсивными процедурами, поскольку каждое из них вызывает само себя. Только второе порождает итеративный процесс, состояние которого можно описать фиксированным числом переменных.
- Вывод
- —
- Значение
- —
- Диагностика
- —
Обе программы возвращают 40320.
Сравните порядок вызовов и умножений. Трасса выполнения с фиксированным пределом точно фиксирует работу, выполненную для этих выбранных входных данных.
Измените программу и сравните результат.
Запустите оба примера со значением 5. Для итеративной версии выпишите n и product перед каждым вызовом.
Показать подсказку
На каждом шаге произведение product на факториал n остается равным значению исходной задачи вычисления факториала.