【问题标题】:Prolog Recursive List ComparisonProlog 递归列表比较
【发布时间】:2014-09-14 14:12:22
【问题描述】:

我刚刚启动 Prolog,为了练习,我试图比较两个列表,看看第一个列表是否比第二个列表大一个元素。到目前为止,我得到了基本情况的工作,但是对于任何具有多个元素的列表,它都会无限循环。谁能解释为什么会这样?任何信息表示赞赏。

代码

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

【问题讨论】:

    标签: list recursion prolog


    【解决方案1】:

    子句应该是:

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

    one_longer([T],[T2]) 形成一个只有一个元素的新列表,这会导致观察到的循环,因为再次应用规则时会不断询问one_longer([[]],[[]]),其中one_longer(T,T2)one_longer 应用于两者的其余部分列表。

    【讨论】:

    • 谢谢,我明白了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多