ВУЗ:
Составители:
9
Итерация и рекурсия включают проверку на завершение: итерация завер-
шается, когда перестаёт выполняться условие продолжения цикла, рекурсия за-
вершается, когда распознаётся нерекурсивный случай.
Как итерация, так и рекурсия приближаются к завершению постепенно.
Итерация с её проверкой повторения продолжает выполнять тело цикла, пока ус-
ловие продолжения цикла не будет нарушено. Рекурсия продолжает
производить
более простые варианты первоначальной задачи, пока не будет достигнут нере-
курсивный случай.
И итерация, и рекурсия может происходить бесконечно: итерация попадает
в бесконечный цикл, если условие продолжения цикла никогда не становится
ложным; рекурсия продолжается бесконечно, если шаг рекурсии не редуцирует
задачу таким образом, что задача сходится к нерекурсивному случаю.
Рекурсия имеет отрицательные стороны. Она многократно инициализирует
механизм вызова подпрограммы и увеличивает связанные с ним расходы про-
цессорного времени и памяти (каждое рекурсивное обращение создаёт копию её
параметров и локальных объектов). Итерация обычно происходит в пределах
подпрограммы, так что здесь нет расходов на повторные вызовы подпрограммы
и дополнительное выделение памяти. Отладка
рекурсивной подпрограммы вы-
зывает большие трудности, чем отладка итерационной подпрограммы.
Любая проблема, которая может быть решена рекурсивно, может быть так-
же решена и итеративно ( не рекурсивно).
Рекурсивный подход предпочтительнее итеративного в тех случаях, когда
рекурсия более естественно отражает математическую сторону задачи и приво-
дит к программе, которая проще для понимания.
Другой причиной для выбора рекурсивного решения является то, что ите-
ративное решение может не быть очевидным.
Страницы
- « первая
- ‹ предыдущая
- …
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »