我想創建一個包含N
元素的列表。 我寫了下面的代碼:Prolog。不創建列表
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]
。它運行良好,但不是按順序。 我的第一個變體代碼有什麼問題?