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

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

Cтраница 1


Рекурсивная подпрограмма может вызывать сама себя. Для обеспечения этого необходим механизм слежения за глубиной вложенности вызовов подпрограммы и за тем, куда производится возврат при каждом вызове.  [1]

Выполнение рекурсивных подпрограмм требует уч та того, что она содержит обрацэния к семой cede. Поэтому каждому новому обращении к такой подпрограмме должны соответсг лвать свой набор рабочих регистров и свое ио о в памяти для запоминания адреса возврата.  [2]

Ниже приведена рекурсивная подпрограмма для обработки данных, имеющих структуру в виде двоичного дерева.  [3]

При создании рекурсивной подпрограммы необходимо построить ее алгоритм так, чтобы выход из нее гарантировался.  [4]

При наличии рекурсивных подпрограмм для обеих конструкций необходимо, чтобы метки во время выполнения изображались парой, составленной из адреса соответствующей машинной команды и указателя на активационную запись. Эти сложности будут подробно рассмотрены в гл. Алгола; таким образом, необходимо перейти к частичному программному моделированию структуры меток и инструкций перехода goto во время выполнения программы.  [5]

При написании рекурсивных подпрограмм необходимо сосредоточить внимание нз том, чтобь: избежать бесконечной рекурсии. В некоторой точке вызов должен быть прекращен, и должна быть предусмотрена альтернативная ветвь. В приведенной выше подпрограмме это происходит тогда, когда число N больше либо равно единице. В этой точке результату присваивается значение единицы, и рекурсия исчерпывается.  [6]

У каждой активации рекурсивной подпрограммы должна быть своя собственная локальная среда. Если, например, X - локальная переменная в Р и Р рекурсивно вызывает себя, то мы ожидаем, что в каждой активации Р будет новая локальная переменная с именем X. Это означает создание новой локальной среды при каждом вызове. Из тех же соображений следует, что, когда Р возвращает управление, ее локальная среда должна быть уничтожена. Возможен также метод с сохранением локальной среды между вызовами. Здесь под сохранением понимается создание единой локальной среды, используемой всеми активациями данной подпрограммы.  [7]

При каждом вызове рекурсивной подпрограммы создается новый набор локальных объектов подпрограммы. Исключением являются объекты, имеющие атрибут SAVE, и объекты, начальное значение которых задается оператором DATA. Объекты, инициализируемые в подпрограммах, получают атрибут SAVE автоматически, а оператор DATA при рекурсивном вызове выполняется только один раз.  [8]

Нелокальные ссылки в рекурсивных подпрограммах не вызывают никаких особых проблем при любом из трех подходов к нелокальным средам. Каждый подход немедленно распространяется на случай рекурсии. При явно описываемой нелокальной среде X является глобальным и, следовательно, существует только в одной активации. В методе статической блочной структуры при обработке ссылки на X ассоциация для X будет выбираться из наиболее поздней активации подпрограммы, в которой описан X. В методе последней ассоциации нужная ассоциация будет, конечно, выбираться из последней активации в цепи вызовов.  [9]

Магазин предназначен для организации работы рекурсивных подпрограмм.  [10]

В частном случае все переменные рекурсивной подпрограммы могут размещаться в ее собственных регистрах. Тогда при входе достаточно размножать лишь область сохранения. Эту задачу автоматически решает макрокоманда PROC без параметров или с ключевым параметром ТМ NO. В последнем случае участок в 18 слов динамически резервируется заново при каждом входе в подпрограмму. Если там обнаружен код, содержащий нули не во всех своих позициях, то новая область не резервируется, а в регистр 13 заносится адрес из третьего слова предыдущей области. При таком способе выделение нового участка в 18 слов происходит столько раз, какова максимальная глубина рекурсии. Например, рассматриваемая ниже подпрограмма НТ при п 10 вызывается 1023 раза, а выделение нового участка происходит всего 10 раз.  [11]

Опять мы имеем дело с очень простой рекурсивной подпрограммой; эта простота является, разумеется, следствием рекурсивной структуры, выбранной нами для представления выражений.  [12]

Как влияют на выбор среды ссылок рекурсивные подпрограммы. В любой момент выполнения у рекурсивной подпрограммы может быть много одновременно существующих активаций. Среды ссылок в различных активациях одной подпрограммы могут в общем случае отличаться друг от друга. Таким образом, перед нами стоит задача определения среды ссылок для каждой активации подпрограммы.  [13]

Мы можем достичь этой цели, написав рекурсивную подпрограмму под названием COMPILE, результатом выполнения которой является компиляция одного оператора.  [14]

Вышеперечисленные шаги 1 и 3 формируют базовые части двух рекурсивных подпрограмм P1TURN и P2TURN, которые вызывают друг друга. Подпрограммы анализа игры Г41М представлены на языке ассемблера ЭВМ 6809 и приведены на рис. 9.22. Входные и выходные параметры передаются с использованием регистров, а локальные переменные по-мещаютгя в стек в начале каждой подпрограммы и осстанав-ливаютгч по завершении работы подпрограммы.  [15]



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