使用Prolog,我需要创建一个规则,确定当给定一个列表时,列表的第一个元素是否等于列表的最后一个元素。以下是我的想法。
The Base Cases:
1) If The Parameter Is Not A List: Return False
2) If The Parameter Is A List But Empty: Return False
3) If The Parameter Is A List But Has One Element: Return False
The Recursive Step:
Recursively Going Through The List Getting The
First Element And TheLast Element Then Compare
fela() :- false. <-- Base Case One
fela([]):-false. <-- Base Case Two
fela([H]):-false. <-- Base Case Three
fela([H|T]):- H1 is H, H1 == T, fela(T,H1). <-- Recursive Step
以下是第一个、最后一个和成员函数。
(Note: "Bellow" 应为 "Below")
first(F, [F|_]).
last(L, [H|T]) :- last(L, T).
member(X, [X|_]).
member(X, [_|T]) :- member(X, T).
我在递归步骤中遇到了困难,不确定如何存储第一个元素并遍历列表获取最后一个元素,然后比较结果以获得真/假答案。能否有人帮帮我呢?
谢谢,
Erik :)