我开发了一种回文检查算法,只需反转给定的元素列表;使用天真的逆转。然后程序检查它是否产生相同的列表。但我似乎有一个我无法弄清楚的问题。程序总是返回false。这是我迄今为止开发的程序......
reverseCurrentList([H|T],ReversedList):-
reverseCurrentList(T,RevT),
append(RevT,[H],ReversedList).
isPalindrome(GivenList):-
reverseCurrentList(GivenList,ReversedList),
GivenList=@=ReversedList.
最后,我决定使用以下代码:
% A palindrome can be read forward or backward; e.g. [x,a,m,a,x]
% is_palindrome(L) :- L is a palindrome list
is_palindrome(L) :-
reverse(L,L).
答案 0 :(得分:1)
您的reverseCurrentList
规则缺少基本子句,因此它永远不会成功。递归调用继续从列表中取出项目,直到列表为空,此时[H|T]
不再统一,因此规则失败。
将第二个子句添加到您的程序中:
reverseCurrentList([], []).