Это A=X-1
, а затем Y=X*Z
. Самое замечательное в верхнем уровне Prolog является то, что вы можете легко попробовать, что делает ваш код:
?- A = X-1.
A = X-1.
?- A = 5-1.
A = 5-1.
Видимо, Пролог издевается :). Для объединения используется оператор =
; если вы хотите выполнять арифметические действия, вы должны использовать is/2
:
?- is(A, -(5, 1)).
A = 4.
обычно записывается как:
?- A is 5-1.
A = 4.
Это просто, чтобы показать вам, что это выражение является термином, и оценивает этот термин в секунду аргумент:
?- Expr = X-1, X = 3, Result is Expr.
Expr = 3-1,
X = 3,
Result = 2.
К вашему определению для factorial: он должен работать, если вы исправите арифметику. Обратите внимание, что было бы чище, если условие для X
в начале говорит X > 1
вместо X \== 0
: что делает ваша текущая программа для fact(1,F)
и сколько ответов вы получаете?
Это работает! Большое спасибо! – telekineser