使用prolog打印偶数:

时间:2013-11-09 10:48:19

标签: prolog

如何在Prolog中打印偶数?这是我打印数字从3到1的代码:以及如何在anthor示例中使用mult而不使用*(

predicates
    count(integer).
clauses
    count(1) :- write(1), nl, !.
    count(X) :- X > 1, write(X), nl, X1 = X-1, count(X1), !.

2 个答案:

答案 0 :(得分:1)

  

如何在Prolog中打印偶数数字

?- between(1, 3, X), X mod 2 =:= 0.
X = 2.

答案 1 :(得分:1)

ДМИТРИЙМАЛИКОВ做了一个很好的,简洁的方法。下面的内容仅基于已启动的方法:

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运算符也可以正常工作。

请注意,对于prolog中的算术表达式赋值,您需要is,而不是=is将计算右侧的表达式,并将结果统一到左侧的未实例化变量中。 =不会评估表达式。