Реферат: Prolog. Реализация на ПЭВМ
<список предикатов> (1)
<предикат условия выхода из рекурсии> (2)
<список предикатов> (3)
<имя правила рекурсии с аргументами или без них > (4)
<список предикатов> (5)
В структуре правила компоненты (1), (3), (5) могут присутствовать или отсутствовать с учетом специфики решаемой задачи. Компоненты (2), (4) обязательны, так как они организуют аппарат активизации правила рекурсии. Обычно компонента (1) - это предикаты, которые не влияют на рекурсию. Компонента (3) содержит предикаты, с помощью которых формируются новые значения аргументов, участвующих в рекурсии, а (5) включает предикаты, которые формируют с помощью аппарата рекурсии искомые значения. (5) - сборка решения. (2) - используется для останова рекурсии, а (4) - реализует повторный вызов рекурсивного правила для новых значений аргумента. В зависимости от заданных граничных условий различают нисходящую и восходящую рекурсию.
Пример.
Определение n-го терма последовательности 1, 1, 2, 6, 24, ...
N 0 1 2 3 4 ...
0 терм=1 3 терм=2*3
1 терм=1*1 4 терм=6*4
2 терм=1*2 5 терм=24*5
Для обозначения того факта, что n-й член последовательности равен V, вводится предикат следующего вида: posl (N, V)
Фрагмент программы:
domains
N, V = integer
predicates
posl = (N, V)
clauses
posl (0, 1)
posl (N, V) if
1) N>0
2) M=N-1
3) posl (M, U)
4) V=U*N
goal
posl (3, x)
Решение задачи производится в 2 этапа:
I этап.