Читайте также:
|
|
В общем случае любая рекурсивная процедура Rec включает в себя некоторое множество операторов S и один или несколько операторов рекурсивного вызова Р. Безусловные рекурсивный процедуры приводят к бесконечным процессам, и на эту проблему нужно обратить особое внимание, так как практическое использование процедур с бесконечным самовызовом невозможно. Такая невозможность вытекает из того, что для каждой копии рекурсивной процедуры необходимо выделять дополнительную область памяти, а бесконечной памяти не существует. Следовательно, главное требование к рекурсивным процедурам заключается в том, что вызов рекурсивной процедуры должен выполняться по условию, которое на каком-то уровне рекурсии станет ложным.
Если условие истинно, то рекурсивный спуск продолжается. Когда оно становится ложным, спуск заканчивается и начинается поочередный рекурсивный возврат из всех вызванных на данный момент копий рекурсивной процедуры.
Структура рекурсивной процедуры может принимать три разных формы:
1. Форма с выполнением действий до рекурсивного вызова (с выполнением действий на рекурсивном спуске).
2. Форма с вьшолнением действий после рекурсивного вызова (с вьшолнением действий на рекурсивном возврате)
3. Форма с вьшолнением действий как до, так и после рекурсивного вызова (с
выполнением действий как на рекурсивном спуске, так и на рекурсивном возврат е).
Все формы рекурсивных процедур находят применение на практике. Многие задачи, в том числе вычисление факториала, безразличны к тому, какая используется форма рекурсивной процедуры. Однако есть классы задач, при решении которых программисту требуется сознательно управлять ходом работы рекурсивных процедур и функций. Такими, в частности, являются задачи, использующие списковые структуры данных.
Дата добавления: 2015-07-16; просмотров: 110 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Сопоставление алгоритмических моделей | | | Пример рекурс алгоритмаЗадача о Ханойских башнях. |