目前,我正在生成一个列表,其中每个元素的值等于前一个元素的平方加上 Z 的值。使用 generate_list 生成列表后,我想检查它是否是有序列表。我已经实现了ordered,然后在控制台中,我试图做一些类似ordered(generate_list(A, B, Z,[]). 的事情,它总是返回false,即使我确定它必须是真的。我知道这种方法在 Prolog 中不好,但我不知道该怎么做......
gen(0,0,_).
gen(N,F,Z) :- X is N-1,gen(X,A,Z),F is (A*A)+Z.
generate_list(A,B,Z,[]):- A>B.
generate_list(A,B,Z,[H|T]):-
A =< B,
gen(A,H,Z),
AA is A + 1,
generate_list(AA,B,Z,T).
ordered([]).
ordered([_]).
ordered([X,Y|Z]):-X=<Y,ordered([Y|Z]).