显示列表 Prolog 中的最后一个元素

Display Last Element in List Prolog

给定列表 [1, 2, 3, 4],显示最后一个元素。我只使用一个参数并使用递归。

这是我试过的。但输出总是 true.

lastElement([]).

lastElement(Stack).

lastElement([_|Tail], Head):-
    lastElement(Tail, Head).

我得到的输出是

> lastElement([1,2,3,4,5]). Singleton variables: [Stack] true

我觉得你想多了。

谓词 lastElement(Stack). 将匹配所有内容。您只需要列表的最后一个元素。

试试这个:

lastElement([Head]) :- write(Head).
lastElement([_|Tail]):-
    lastElement(Tail).

当我 运行 ?- lastElement([1,2,3]). 我得到 3 显示。

因为您还标记了 , I just want to add that SWI-Prolog provides the last(?List, ?Last) 谓词“开箱即用”。

?- last([1,2,3], X).
X = 3.

?- last(L, 5).
L = [5] ;
L = [_13202, 5] ;
L = [_13202, _13862, 5]
...