Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Одним из способов организации повторяющихся операций на Прологе является рекурсия. Однако реализация рекурсии обычно требует много оперативной памяти для хранения стека. Поэтому следует использовать другие способы реализации повторений.
Рассмотрим простую БД, содержащую информацию о книгах.
clauses
book(“F_K”,“Posledniu iz mogikan”).
book(“F_K”,“Sledopyt”).
book(“Stivenson”,“Ostrov sokrovish”).
book(“F_K”,“Shpion”).
Цель: book(“F_K”,Y)
Пролог найдет все решения для переменной Y.
Посмотрим, как будет работать программа, если эту цель задать как внутреннюю в разделе goal.
goal
book(“F_K”,Y), write(Y), nl.
В этом случае получим только одно решение. Чтобы получить все решения при ответе на запрос из раздела goal можно воспользоваться предикатом fail следующим образом:
Предикат fail можно рассматривать как цель, которая никогда не удовлетворяется, и, таким образом, Пролог выдает все решения. Этот метод носит название метода отката после неудачи.
Общий вид правила, использующего этот метод:
правило для повторения:-
предикаты,
fail.
Дата публикования: 2015-10-09; Прочитано: 168 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!