下面的代码是一个Prolog的代码,提供了比0。每次我把;
在解释更大的所有整数,它提供了一个数字:如何在Prolog中将数字从1打印到100?
is_integer(0).
is_integer(X) :- is_integer(Y),X is Y+1.
有它0到1之间的数字给人一种方式100只。当它达到100时,它应该停止。
下面的代码是一个Prolog的代码,提供了比0。每次我把;
在解释更大的所有整数,它提供了一个数字:如何在Prolog中将数字从1打印到100?
is_integer(0).
is_integer(X) :- is_integer(Y),X is Y+1.
有它0到1之间的数字给人一种方式100只。当它达到100时,它应该停止。
真是一个好测验。它很好地体现了使用Prolog定义的最小工具来控制递归的难度。我们必须致力于我们的解决方案为低于预定的限制,制约了otherless绑定搜索:
is_integer(0).
is_integer(X) :-
is_integer(Y),
(Y >= 100, ! ; X is Y + 1).
下面是跟踪输出限制的范围内,以3(即... Y >= 3, ! ; ...
)
?- is_integer(X).
X = 0 ;
X = 1 ;
X = 2 ;
X = 3 ;
true.
在B,Ciao,SICStus(库),SWI,YAP,XSB(库)中有一个用于此目的的内置谓词between/3
。
?- between(0,100,X).
X = 0 ;
X = 1 ;
...
X = 100.
如果你开始学习Prolog的,更好的尝试使用s(X)
数第一,其更容易理解和推理。同样的例子,但只上去过3:
?- nat_nat_sum(N,_,s(s(s(0)))).
与定义:
nat_nat_sum(0,I,I).
nat_nat_sum(s(I),J,s(K)) :-
nat_nat_sum(I,J,K).