Prolog:我如何返回多个值?

时间:2014-11-28 19:24:16

标签: prolog

我想获取一个值,例如3,并将所有值从给定值返回到1。例如,如果我传入count(3),我将分别获得3,2,1。我不想将值作为列表返回。对于我写的内容,我尝试先返回一个值,然后递归调用下一个值来返回。然而,这仅返回一次。我做错了什么?

 count(0,1).
 count(N,F) :-
      N1 is N-1,
      F is N-1,
      count(N1,F1).

2 个答案:

答案 0 :(得分:1)

count(S0, S) :-
   closure0(\X0^X^succ(X,X0), S0, S).

使用this definition和lambdas 或

count(N,N).
count(N0,N) :-
   succ(N1,N0),
   count(N1,N).

或以普通的ISO Prolog:

count(N,N).
count(N0,N) :-
   N0 > 0,   % or 1
   N1 is N0-1,
   count(N1,N).

答案 1 :(得分:0)

可能是这样的:

 count(N,F) :-
    N > 0,
    (   F = N
    ;   N1 is N-1,
        count(N1,F)).

你得到了

  

? - 计数(3,V)。

     

V = 3;

     

V = 2;

     

V = 1;

     

假。