如何获得以下程序以产生以下输出:
?- genN(3,R).
R=0;
R=1;
R=2;
我当前的输出只是R=0;
代码:
genN(1,0).
genN(N,R) :-
N > 1,
N1 is N-1,
genN(N1,R1),
R is R1.
较新的代码:
genN(1,R):-R is 0.
genN(N,R) :-
N > 1,
N1 is N-1,
genN(N1,R),
R is N1.
上述程序用于输出0到N-1之间的数字。
答案 0 :(得分:1)
如果您的Prolog实施支持clpfd,您可以这样写genN/2
:
:- use_module(library(clpfd)).
genN(Up,N) :-
N #>= 0,
N #< Up,
indomain(N).
示例查询:
?- genN(3,N).
N = 0 ;
N = 1 ;
N = 2.