Prolog 生成一个整数范围--”;“本地堆栈外”;[初学者]
Prolog 生成一个整数范围--”;“本地堆栈外”;[初学者],prolog,failure-slice,clpfd,Prolog,Failure Slice,Clpfd,gen(N,R): R是按顺序介于0和N-1之间的值。 N非零正整数。N将始终给出 例如:?-genN(2,R)。给出R=0;R=1。我是这样实现的,但它有“超出本地静态错误”: 要理解程序没有终止的原因,请使用。为此,我们将插入一些额外的目标false,以帮助理解为什么您添加的目标不相关。如果这个结果片段没有终止,那么您的原始程序也不会终止。正如你所看到的,在这一部分没有发生太多的事情。事实上,您的程序将永远终止 gen(_X,0) :- false. gen(X,R) :- gen(X,
gen(N,R)
:
R
是按顺序介于0和N-1之间的值。
N
非零正整数。N
将始终给出
例如:?-genN(2,R)
。给出R=0;R=1。
我是这样实现的,但它有“超出本地静态错误”:
要理解程序没有终止的原因,请使用。为此,我们将插入一些额外的目标
false
,以帮助理解为什么您添加的目标不相关。如果这个结果片段没有终止,那么您的原始程序也不会终止。正如你所看到的,在这一部分没有发生太多的事情。事实上,您的程序将永远终止
?- genN2(3,R).
R = 0 ;
R = 1 ;
R = 2 ;
ERROR: Out of local stack
gen(N0, R) :-
N1 is N0-1,
between(0, N1, R).