Простая рекурсия.

recursive_rule : -

<предикаты>,

recursive_rule

   При каждом новом вызове вводятся новые конкретные переменные. Если рекурсивное правило не генерирует указатели отката и последняя подцель - само рекурсивное правило, Turbo Prolog сам убирает все дополнительные операции со стеком, вызванные рекурсией - это называется устранением хвостовой рекурсии.

Восходящая рекурсия - вызов правила с возрастающим аргументом.

Нисходящая - с убывающим.

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

Пример:

Read_char : - read_char (Ch),

Ch <> ‘$’,

Write (Ch),

Read_char.

Повтор или вывод введённых символов будет до тех пор, пока не будет введён знак $.

Hosted by uCoz