Рекурсивная подпрограмма - Большая Энциклопедия Нефти и Газа, статья, страница 3
Никому не поставить нас на колени! Мы лежали, и будем лежать! Законы Мерфи (еще...)

Рекурсивная подпрограмма

Cтраница 3


31 Упрощенные таблицы локальной среды и обработка ссылок в Фортране. [31]

Обратимся к методу 2, при котором локальная среда уничтожается при выходе из подпрограммы и вновь создается при входе. Идентификаторы в таблице остаются неизменными между вызовами, но ассоциированные с ними значения при выходе уничтожаются, а при повторном входе создаются новые значения. Однако это решение не обобщается на случай рекурсивных подпрограмм, и поэтому мы укажем другой метод моделирования, главной целью которого является обеспечение рекурсивных вызовов.  [32]

33 Цепочки вызывающих и вызываемых программ.| Структура области сохранения. [33]

Основная программа продолжает выполняться до точки Р2, где возникает цепочка передач и возврата управления, аналогичная той, что была в точке Pi. Завершившись, основная программа возвращает управление вызвавшей ее операционной системе. Не исключено, что некоторая подпрограмма А содержит обращение к самой себе - либо непосредственно, либо после некоторой цепочки обращений к другим подпрограммам. Например, подпрограмма А обращается к подпрограмме В, подпрограмма В - к подпрограмме С, а подпрограмма С - снова к подпрограмме А. Подпрограммы, допускающие обращение к себе, называются рекурсивными. Рекурсивные подпрограммы являются эффективным инструментом при реализации многих алгоритмов обработки списков со сложной организацией. Для написания рекурсивных подпрограмм существуют специальные приемы, на которых здесь останавливаться не будем.  [34]

Основная программа продолжает выполняться до точки Р2, где возникает цепочка передач и возврата управления, аналогичная той, что была в точке Pi. Завершившись, основная программа возвращает управление вызвавшей ее операционной системе. Не исключено, что некоторая подпрограмма А содержит обращение к самой себе - либо непосредственно, либо после некоторой цепочки обращений к другим подпрограммам. Например, подпрограмма А обращается к подпрограмме В, подпрограмма В - к подпрограмме С, а подпрограмма С - снова к подпрограмме А. Подпрограммы, допускающие обращение к себе, называются рекурсивными. Рекурсивные подпрограммы являются эффективным инструментом при реализации многих алгоритмов обработки списков со сложной организацией. Для написания рекурсивных подпрограмм существуют специальные приемы, на которых здесь останавливаться не будем.  [35]

36 Использование повторно введенного модуля.| Схема подпрограммы НТ. [36]

Обе программы вызывают в качестве подпрограммы один и тот же модуль RE. Управляющая программа системы следит за эффективным использованием ресурсов. В то время, когда программа В ожидает данные, которые ей передает канал, процессор отдается в распоряжение программы А, и наоборот. Такие переключения могут происходить в заранее не предсказуемых местах. Может, например, оказаться, что процессор будет отобран у программы А в середине исполнения подпрограммы RE а передан В, которая, в свою очередь, обратится к тому же самому экземпляру RE. Если RE является обычным ( хотя бы и восстанавливающимся) модулем, значения его переменных, хранивших информацию об обращении А, будут утрачены. Чтобы атого не произошло, необходимо размножать переменные RE при повторных входах, подобно тому, как это делается в рекурсивной подпрограмме.  [37]

Последовательная обработка этих структур также составляет важный аспект многих программ на Лиспе. На элементы списочных структур Лиспа нельзя ссылаться с помощью целых индексов, и форма этих структур весьма нерегулярна. Эти факты не позволяют эффективно применять циклические инструкции для последовательной обработки списочных структур. Обработка дерева происходит рекурсивно. Сначала мы применяем проверки и операции к каждому элементу главного списка и всякий раз, когда элемент этого списка сам оказывается подсписком; мы рекурсивно вызываем тот же процесс для обработки этого подсписка. По существу, структура рекурсивных подпрограмм используется, чтобы следить за текущей позицией в списочной структуре.  [38]



Страницы:      1    2    3