我习惯于实现一个递归函数来检查给定列表L是否以反向顺序写入:
orderIsReverse(L):-
[X|Q]=L,
[XP|_]=Q,
(X<XP -> false; orderIsReverse(Q)),
true.
但是,在编译代码并在SWI Prolog内提示orderIsReverse([3,2,1])
后,我会返回false
。
代码有什么问题?
答案 0 :(得分:1)
当输入列表为空时(以及当它包含一个单独的元素时,您需要处理这种情况,因为您需要两个用于比较)。
orderIsReverse([X1,X2|L]):-
X1 > X2, orderIsReverse([X2|L]).
orderIsReverse([_]).
orderIsReverse([]).
更新:修复逻辑。