Простая рекурсия.
recursive_rule : -
<предикаты>,
recursive_rule
При каждом новом вызове вводятся новые конкретные переменные. Если рекурсивное правило не генерирует указатели отката и последняя подцель - само рекурсивное правило, Turbo Prolog сам убирает все дополнительные операции со стеком, вызванные рекурсией - это называется устранением хвостовой рекурсии.
Восходящая рекурсия - вызов правила с возрастающим аргументом.
Нисходящая - с убывающим.
Очевидно, что среди признаков должен быть хотя бы один, который при неуспехе прекращает рекурсию. Чтобы прекратить рекурсию среди предикатов.
Пример:
Read_char : - read_char (Ch),
Ch <> ‘$’,
Write (Ch),
Read_char.
Повтор или вывод введённых символов будет до тех пор, пока не будет введён знак $.