显示列表 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
显示。
因为您还标记了 swi-prolog, 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]
...
给定列表 [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
显示。
因为您还标记了 swi-prolog, 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]
...