Составители:
Рубрика:
используется и для хранения значений фактических параметров и
размещения локальных переменных.
Пример
Иллюстрация вложенного вызова подпрограмм:
<основная программа>
...
Рекурсия
Рекурсивная подпрограмма – это подпрограмма, вызывающая
саму себя. Первый вызов порождает цепочку вложенных вызовов,
возможно бесконечную. Каждый вызов требует места на стеке –
для хранения адреса возврата, параметров и локальных перемен-
ных. Чтобы прервать эту последовательность вызовов, необходимо
условие останова. Если условие останова отсутствует или не сраба-
тывает, получаем сообщения об ошибке – вариации фразы «пере-
полнение стека».
Некоторые задачи естественно описываются в терминах рекур-
сивных функций. Рекурсивная программа для такой задачи будет
проще и понятнее обычной.
Вызов п/п Sub1
...
<подпрограмма Sub1>
...
Вызов п/п Sub2
...
Возв
р
ат
<подпрограмма Sub2>
...
Возврат
Стек
адрес возврата
в Sub2
адрес возврата
в Sub1
адрес возврата
в основную
программу
23
используется и для хранения значений фактических параметров и
размещения локальных переменных.
Пример
Иллюстрация вложенного вызова подпрограмм:
<основная программа>
...
Вызов п/п Sub1 Стек
...
адрес возврата
в Sub2
адрес возврата
<подпрограмма Sub1> в Sub1
... адрес возврата
Вызов п/п Sub2 в основную
... программу
Возврат
<подпрограмма Sub2>
...
Возврат
Рекурсия
Рекурсивная подпрограмма – это подпрограмма, вызывающая
саму себя. Первый вызов порождает цепочку вложенных вызовов,
возможно бесконечную. Каждый вызов требует места на стеке –
для хранения адреса возврата, параметров и локальных перемен-
ных. Чтобы прервать эту последовательность вызовов, необходимо
условие останова. Если условие останова отсутствует или не сраба-
тывает, получаем сообщения об ошибке – вариации фразы «пере-
полнение стека».
Некоторые задачи естественно описываются в терминах рекур-
сивных функций. Рекурсивная программа для такой задачи будет
проще и понятнее обычной.
23
Страницы
- « первая
- ‹ предыдущая
- …
- 21
- 22
- 23
- 24
- 25
- …
- следующая ›
- последняя »
