如何在Prolog中打印偶數?這是我的代碼打印的數字從3到1:怎麼使用MULT沒有(*)在anthor例如:使用prolog打印偶數:
predicates
count(integer).
clauses
count(1) :- write(1), nl, !.
count(X) :- X > 1, write(X), nl, X1 = X-1, count(X1), !.
如何在Prolog中打印偶數?這是我的代碼打印的數字從3到1:怎麼使用MULT沒有(*)在anthor例如:使用prolog打印偶數:
predicates
count(integer).
clauses
count(1) :- write(1), nl, !.
count(X) :- X > 1, write(X), nl, X1 = X-1, count(X1), !.
我怎樣才能在序言
?- between(1, 3, X), X mod 2 =:= 0.
X = 2.
ДМИТРИЙМАЛИКОВ做了一個很好,簡潔的方法。下面只是一個建立在已啓動的辦法:
predicates
count(integer).
clauses
count(X) :-
X /\ 1 =:= 1, !, % Using bitwise AND (/\) to check for odd
X1 is X - 1,
count(X1).
count(X) :-
X > 1,
write(X), nl,
X1 is X - 2,
count(X1).
| ?- count_even(7).
6
4
2
我用按位與(/\
)檢查該號碼的奇偶性只是爲了說明的不同方法。 mod
運營商的工作也是如此。
請注意,對於序言中的算術表達式分配,您需要is
而不是=
。 is
將計算右側的表達式並將結果統一到左側的未被實例化的變量。 =
不會評估表達式。
如果你想打印偶數,這個'X> 1,寫(X)'是非常錯誤的。它會打印任何大於X的數字,其中包括3 – Shevliaskovic