prolog - 多个输出,相同的变量

时间:2015-05-11 18:28:07

标签: prolog

如何获得以下程序以产生以下输出:

?- 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之间的数字。

1 个答案:

答案 0 :(得分:1)

如果您的Prolog实施支持,您可以这样写genN/2

:- use_module(library(clpfd)).

genN(Up,N) :-
    N #>= 0, 
    N #<  Up,
    indomain(N).

示例查询:

?- genN(3,N).
N = 0 ;
N = 1 ;
N = 2.