Prolog 序言:如何返回多个值?

Prolog 序言:如何返回多个值?,prolog,Prolog,我想取一个值,比如3,然后将给定值的所有值返回到1。例如,如果我传入计数(3),我将分别得到3,2,1。我不想将值作为列表返回。对于我写的内容,我尝试首先返回一个值,然后递归调用下一个要返回的值。然而,这只返回一次。我做错了什么 count(0,1). count(N,F) :- N1 is N-1, F is N-1, count(N1,F1). 使用和lambdas 或 或在普通ISO序言中: count(N,N). count(N0,N) :-

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

 count(0,1).
 count(N,F) :-
      N1 is N-1,
      F is N-1,
      count(N1,F1).
使用和lambdas 或

或在普通ISO序言中:

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

可能是这样的:

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

-计数(3,V)

V=3

V=2

V=1


这将返回包括0在内的值,OP要求排除0。
count(N,N).
count(N0,N) :-
   N0 > 0,   % or 1
   N1 is N0-1,
   count(N1,N).
 count(N,F) :-
    N > 0,
    (   F = N
    ;   N1 is N-1,
        count(N1,F)).