Студопедия


Авиадвигателестроения Административное право Административное право Беларусии Алгебра Архитектура Безопасность жизнедеятельности Введение в профессию «психолог» Введение в экономику культуры Высшая математика Геология Геоморфология Гидрология и гидрометрии Гидросистемы и гидромашины История Украины Культурология Культурология Логика Маркетинг Машиностроение Медицинская психология Менеджмент Металлы и сварка Методы и средства измерений электрических величин Мировая экономика Начертательная геометрия Основы экономической теории Охрана труда Пожарная тактика Процессы и структуры мышления Профессиональная психология Психология Психология менеджмента Современные фундаментальные и прикладные исследования в приборостроении Социальная психология Социально-философская проблематика Социология Статистика Теоретические основы информатики Теория автоматического регулирования Теория вероятности Транспортное право Туроператор Уголовное право Уголовный процесс Управление современным производством Физика Физические явления Философия Холодильные установки Экология Экономика История экономики Основы экономики Экономика предприятия Экономическая история Экономическая теория Экономический анализ Развитие экономики ЕС Чрезвычайные ситуации ВКонтакте Одноклассники Мой Мир Фейсбук LiveJournal Instagram

Использование рекурсии




Рекурсия – способ описания функций или процессов через самих себя. Рекурсия используется как основа для записи рекурсивных конструкций.

Рекурсивность – это свойство языка программирования, состоящее в том, что конструкции языка допускают включение в себя в явном виде конструкции того же типа.

Именно это обстоятельство позволяет записывать любую программу с использованием небольшого количества типов логических структур. В логическом программировании такое поведение обычно достигается за счет использования рекурсивных процедур, то есть процедур, имя которых встречается по крайней мере в одном вызове из ее тела. Итерационные процедуры, таким образом, являются частным случаем рекурсивных процедур.

Введем в рассмотрение еще одно отношение –ancestor (предок). Определим его в терминах уже известного отношения parent. Отношение ancestor может быть представлено с помощью двух правил:

Правило для определения прямых предков (1);

Правило для определения отдаленных предков, то есть таких, между которыми существует цепочка родительских связей типа parent. (2)

Рис.2.4.Отношение ancestor для прямого(правило 1) и отдаленного предков(правило2)

Для всех X и Z,

1) X - предок Z, если

X – родитель Z.

Второе правило (б) формулируется так:

Для всех X и Z,

2) если имеется такой Y, что

а) X -родитель Y(прямые предки) и

б) Y –предок Z. (отдаленные предки)

Эти утверждения можно перевести на Пролог таким образом:

1) ancestor(X,Z):-

parent(X,Z).

2) ancestor(X,Z):-

parent(X,Y),

ancestor(Y,Z).

Отсюда видно (2), что было использовано утверждение ancestor, которое само еще не было полностью определено. Такие определения называются рекурсивными. Отношение, представленное в заголовке правила (2) зависит от более простой версии самого себя- от подцели ancestor(Y,Z).

Предложенная задача содержит в себе подзадачу такого же типа. При работе с такими задачами должно существовать обязательное условие выхода из рекурсии, иначе рекурсия может оказаться бесконечной, а правила бесполезными. Окончательное решение задачи откладывается до тех пор, пока не сработает утверждение, которое и определяет условие выхода из рекурсии. Ответственность за выход из рекурсии лежит на программисте.

Состав рекурсивной процедуры :

Нерекурсивное предложение (1), определяющее вид процедуры в момент ее прекращения (терминальный случай –базис рекурсии).

Рекурсивное правило (2). Первая подцель в теле правила вырабатывает новые значения аргументов, далее идет рекурсивная подцель, в которой используются эти новые значения аргументов. При каждом вызове это правило поднимается на одно поколение вверх.





Дата добавления: 2015-04-01; просмотров: 591; Опубликованный материал нарушает авторские права? | Защита персональных данных | ЗАКАЗАТЬ РАБОТУ


Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Студент - человек, постоянно откладывающий неизбежность... 10423 - | 7292 - или читать все...

Читайте также:

  1. End Sub. РИСУНОК 6. Использование метода Debug.Print для тестирования встроенных функций
  2. I. ИСПОЛЬЗОВАНИЕ КРИСТАЛЛОВ
  3. II Форматирование текста и использование табуляции
  4. III Использование формул при вычислениях в таблице
  5. III. Использование технологии РКМЧП в лекционной форме
  6. XVI.III. Использование метода маржинального дохода в определении запасов прочности
  7. XVI.VI. Использование метода маржинального дохода в ценовой политике торговых организаций
  8. Y Использование функций РАНГ и ПРЕДСКАЗАНИЕ
  9. Аварийные радиобуи EPIRB, SART. Назначение, использование, эксплуатационные проверки
  10. Алгоритмы распределения с использованием внешней памяти
  11. Анализ финансовой устойчивости организации. Финансовая устойчивость – это такое состояние финансовых ресурсов, их распределение и использование
  12. Апелляции на решения о предоставлении или отказе в предоставлении права на терапевтическое использование


 

3.231.228.109 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.


Генерация страницы за: 0.002 сек.