Литература Сущность рекурсии
Download 357.58 Kb.
|
3Рекурсия и рекурсивные алгоритмы
Пример 1.
Результатом вызова вида LoopImitation(1, 10) станет десятикратное выполнение инструкций с изменением счетчика от 1 до 10. В данном случае будет напечатано: Hello N 1 Hello N 2 … Hello N 10 Вообще, не трудно видеть, что параметры процедуры это пределы изменения значений счетчика. Можно поменять местами рекурсивный вызов и подлежащие повторению инструкции, как в следующем примере. Пример 2.
В этом случае, прежде чем начнут выполняться инструкции, произойдет рекурсивный вызов процедуры. Новый экземпляр процедуры также, прежде всего, вызовет еще один экземпляр и так далее, пока не дойдем до максимального значения счетчика. Только после этого последняя из вызванных процедур выполнит свои инструкции, затем выполнит свои инструкции предпоследняя и т.д. Результатом вызова LoopImitation2(1, 10) будет печать приветствий в обратном порядке: Hello N 10 … Hello N 1 Если представить себе цепочку из рекурсивно вызванных процедур, то в примере 1 мы проходим ее от раньше вызванных процедур к более поздним. В примере 2 наоборот от более поздних к ранним. Наконец, рекурсивный вызов можно расположить между двумя блоками инструкций. Например:
Здесь сначала последовательно выполнятся инструкции из первого блока затем в обратном порядке инструкции второго блока. При вызове LoopImitation3(1, 10) получим: Hello N 1 … Hello N 10 Hello N 10 … Hello N 1 Потребуется сразу два цикла, чтобы сделать то же самое без рекурсии. Тем, что выполнение частей одной и той же процедуры разнесено по времени можно воспользоваться. Например: Download 357.58 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling