我想创建一个由N
元素组成的列表。我写了以下代码:
DOMAINS
list = integer*
PREDICATES
create(integer, integer, list)
CLAUSES
create(_, 0, []).
create(Start, End, [Start|T]):-
Start < End + 1,!,
Counter = Start + 1,
create(Counter, End, T).
GOAL
create(1, 5, L).
但它返回我No Solution
。
另一方面,如果我Counter
像这样改变我的方向:
DOMAINS
list = integer*
PREDICATES
create(integer,list)
CLAUSES
create(0,[]).
create(N,[N|T]):-
N > 0,
NN = N - 1,
create(NN,T).
GOAL
create(5,L).
它返回我 1 解决方案:L=[5,4,3,2,1]
。它工作得很好,但不是按顺序。我的第一个代码变体有什么问题?