如何在 Prolog 中只打印偶数?这是我打印从 3 到 1 的数字的代码:以及如何在 anth 示例中使用不带 (*) 的 mult:
predicates
count(integer).
clauses
count(1) :- write(1), nl, !.
count(X) :- X > 1, write(X), nl, X1 = X-1, count(X1), !.
如何在 Prolog 中只打印偶数?这是我打印从 3 到 1 的数字的代码:以及如何在 anth 示例中使用不带 (*) 的 mult:
predicates
count(integer).
clauses
count(1) :- write(1), nl, !.
count(X) :- X > 1, write(X), nl, X1 = X-1, count(X1), !.
如何在 Prolog 中只打印偶数
?- 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
我使用按位 AND ( /\
) 来检查数字的奇偶性,只是为了说明一种不同的方法。mod
操作员也能正常工作。
请注意,对于序言中的算术表达式赋值,您需要is
,而不是=
。is
将计算右侧的表达式并将结果统一到左侧的未实例化变量。=
不会评估表达式。