Читайте также: |
|
В ходе выполнения рекурсия функций вызывает независимую активацию этой функции. Фреймом активации называется совокупность всех данных, необходимых для одной а активации функции. Фрейм активации содержит независимые копии всех локальных переменных и всех формальных параметров функции. В ходе выполнения рекурсивного процесса образуется несколько одновременно существующих активаций: каждая имеет свой фрейм. В выполнении рекурсивного процесса выделяют следующие стадии:
1. Стадия порождения рекурсивных вызовов: характеризуется тем, что процесс выполнения доходит до рекурсивной ветви, запоминает существующий на данный момент фрейм активации и запускает процесс выполнения этой же функции с новым фреймом активации;
2. Стадия возврата: начинается, когда в какой-либо i-й ветви будут выполнены какие-то начальные условия. Функция возвращает значение в предшествующий процесс и так до тех пор, пока не будут выполнены все отложенные процессы. Значение 1-го процесса – значение 1-ой функции. За ходом выполнения рекурсивных функций можно следить с помощью трассировки.
За выполнением рекурсивного процесса можно проследить введением трассировки рекурсивной функции. Для управления трассировкой в Лиспе введены функции TRACE и UNTRACE.
>(TRACE function)
FUNCTION
С этого момента при каждом обращении к функции будет выдаваться информация о текущем фрейме активации. Для каждого входа в функцию − значения фактических параметров, для каждого возврата значения функцией − возвращаемые значения
>(UNTRACE function); отключение трассировки
Дата добавления: 2015-07-19; просмотров: 110 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Косвенная рекурсия, пример | | | Применяющий функционал Лиспа |