В любой момент программе необходимо помнить состояние, но его размер всегда неизменный — всего два числа.
Подобный итеративный процесс в целом может быть описан так:
- Определить начальное состояние. В нашем случае мы делаем первый вызов iter с n и 1. Это начальное состояние.
- Проверить терминальный сценарий. Мы проверяем, не равен ли counter числу 1 и останавливаем рекурсию, когда он принимает значение 1.
- Определить новое состояние. Это то, как процесс двигается вперед. В нашем случае мы делаем еще один вызов iter с уменьшенным counter и умноженным accumulator. Два этих новых числа определяют новое состояние.
- Повторить шаг 2.
И эта штука повторяется, пока не доберется до терминального сценария.
Давайте повторим вкратце.
- Рекурсия — это когда что-то содержит себя в своем описании.
- Рекурсивный процесс — это процесс вычисления с отложенными вычислениями.
- Итеративный процесс — это процесс вычисления, когда состояние может быть описано фиксированным количеством значений.
Теперь, после короткого тестового задания будет вероятно самое сложное упражнение этого курса. Но я уверен, что вы его раскусите. А когда вы это сделаете, вы почувствуете себя немного героем, как это было со мной.