【发布时间】:2018-10-12 11:27:32
【问题描述】:
如果列表具有相同的第一个和最后一个元素但不使用附加谓词进行递归,我将如何编写如下所示的成功的序言程序?
firstlast([H,H]).
firstlast([F,_|T]) :- firstlast([F|T]).
示例查询:
?- firstlast([1,2,3,1]).
Yes
?- firstlast([1,2,3]).
No
【问题讨论】:
-
提示:你可以使用
append(_, [Last], L)获取列表的最后一个元素Last。 -
此外,我的印象是,您的第一次尝试并未涵盖边缘情况:单例列表。
-
为什么不用递归?