Факториал в Prolog
Этот пример состоит из двух частей — первую часть кода следует сохранить в файле fact.pl
, расположенном в рабочем каталоге Poplog, а вторую — ввести вручную в интерактивном режиме.
[-fact].
загружает базу фактов и правил из этого файла в текущую сессию Poplog (и выводит сообщение fact reconsulted
, чтобы обозначить успешность загрузки). Запрос fact(16,X).
пытается найти значение X, при котором этот предикат будет оценен как истинный. Вывод, требующийся в примере, будет побочным эффектом оценивания запроса, а основным результатом будет X = 20922789888000 ?
. Это означает, что если вы недовольны такой привязкой переменных, вы можете отказаться от нее (введя ; ), и будет продолжен поиск лучшей привязки.
% fact.pl
fact(X, F) :-
( X=0, F=1;
Y is X-1, fact(Y, Z), F is X*Z),
write(X), write('! = '), write(F), nl.
% interactive
[-fact].
fact(16,X).
Комментарии
]]>blog comments powered by Disqus
]]>