Информатика: Сегментация программ. Гурьяшова Р.Н - 23 стр.

UptoLike

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

   Пример
   Иллюстрация вложенного вызова подпрограмм:

       <основная программа>
       ...
       Вызов п/п Sub1                            Стек
       ...
                                              адрес возврата
                                              в Sub2
                                              адрес возврата
            <подпрограмма Sub1>               в Sub1
            ...                               адрес возврата
            Вызов п/п Sub2                    в основную
            ...                               программу
            Возврат



                  <подпрограмма Sub2>
                  ...
                  Возврат


                           Рекурсия

   Рекурсивная подпрограмма – это подпрограмма, вызывающая
саму себя. Первый вызов порождает цепочку вложенных вызовов,
возможно бесконечную. Каждый вызов требует места на стеке –
для хранения адреса возврата, параметров и локальных перемен-
ных. Чтобы прервать эту последовательность вызовов, необходимо
условие останова. Если условие останова отсутствует или не сраба-
тывает, получаем сообщения об ошибке – вариации фразы «пере-
полнение стека».
   Некоторые задачи естественно описываются в терминах рекур-
сивных функций. Рекурсивная программа для такой задачи будет
проще и понятнее обычной.

                               23