我想获取一个值,例如3,并将所有值从给定值返回到1。例如,如果我传入count(3),我将分别获得3,2,1。我不想将值作为列表返回。对于我写的内容,我尝试先返回一个值,然后递归调用下一个值来返回。然而,这仅返回一次。我做错了什么?
count(0,1).
count(N,F) :-
N1 is N-1,
F is N-1,
count(N1,F1).
答案 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;
假。