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