gen(N,R):
R是 0 到 N-1 之间的值,按顺序。
N非零正整数。N将永远给予。
例如:?- genN(2,R)。给R=0;R=1.我这样实现,但它有“本地静态错误”:
gen(X,0).
gen(X,R) :-
gen(X,R1),
R is R1+1,
R<X, % why this line
R>=0. % and this line can't keep the range successfully?
结果:
?- genN2(3,R).
R = 0 ;
R = 1 ;
R = 2 ;
ERROR: Out of local stack