【问题标题】:Briefly explain how the Prolog program works?Consider the Prolog program given below简单解释一下 Prolog 程序是如何工作的?考虑下面给出的 Prolog 程序
【发布时间】:2019-08-05 12:51:55
【问题描述】:
test(X,[ ],0).

test(X,[H|T], N) :- H >= X, test (X,T,N1), N is N1+1.

test (X,[H|T], N) :- H < X, test (X,T,N).

使用上面的 Prolog 程序为以下查询绘制搜索(派生)树。

|?- test (7,[9, 5, 2, 10, 7,8], N) . 

【问题讨论】:

    标签: prolog logic


    【解决方案1】:

    这是一个简单的递归:一个谓词在 3 种不同的情况下被调用到自身,这样它遍历列表,将它们的元素与给定的元素 (X) 进行比较。

    基本情况(第一个谓词)是列表为空,因此没有元素可以大于或等于给定的元素。 第二个和第三个谓词将列表的第一个元素 (H) 与给定的 (X) 进行比较,如果 H 大于或等于 X,那么我们在第二个谓词中,因此我们将 1 与结果相加对列表的其余部分执行相同的操作。否则,如果 H 小于 X,则我们返回将谓词应用于列表其余部分的结果。

    很容易看到例如调用

    测试 (2,[1,2,3], N) 。

    N 将是 2:

    test(2,[1,2,3],2) -> test(2,[2,3],2) -> test(2,[3],1) -> test(2,[ ],0)。

    【讨论】:

    • 请把搜索树的答案发给我
    猜你喜欢
    • 1970-01-01
    • 2018-05-17
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    相关资源
    最近更新 更多