logo search
TurboProlog / Документация / TOM_1

Процесс повторения

Программисты на Паскале, Бэйсике или Си, которые начинают использо-

вать Турбо Пролог часто испытывают разочарование, обнаружив, что язык не

имеет конструкций FOR, WHILE или REPEAT. Существует непрямой способ выра-

жения повтора. Пролог позволяет только два вида повтопения - возврат, в

котором осуществляется поиск многих решений в одном запросе и рекурсию в

которой процедура вызывает сама себя.

Как будет показано, этот недостаток не снижает мощи Пролога. Факти-

чески, Турбо Пролог распознает специальный случай рекурсии - хвостовую

рекурсию - и компилирует ее в итерацию на машинном языке. Это означает,

что хотя программная логика и выражается рекурсивно, скомпилированный код

также эффективен, как если бы программа была написана на Паскале или на

Бэйсике.

В этом разделе мы расширим ваше искусство писать повторяющиеся про-

цессы на Прологе. Как увидете, рекурсия во многих случаях яснее, более

логична и менее чревата ошибками, чем циклы, используемые обычными языка-

ми программирования. Перед погружением в рекурсию, однако, рассмотрим еще

раз поиск с возвратом.