Prolog递归列表比较

时间:2014-09-14 04:37:08

标签: list recursion prolog

我刚开始Prolog并且为了练习我试图比较两个列表并查看第一个列表是否比第二个列表大一个元素。到目前为止,我已经得到了基本情况,但是对于任何包含多个元素的列表,它都会无限循环。任何人都可以解释为什么会这样吗?任何信息都表示赞赏。

代码

one_longer([H],[]).
one_longer([H|T],[H2|T2]) :- one_longer([T],[T2]).

1 个答案:

答案 0 :(得分:1)

该条款应为:

one_longer([H|T],[H2|T2]) :- one_longer(T,T2).

由于one_longer([T],[T2])形成一个新列表,其中只有一个元素会导致观察到的循环再次应用规则时会导致不断询问one_longer([[]],[[]]) one_longer(T,T2)适用的位置{{1}这两个名单的剩余部分。

相关问题