【问题标题】:Predicate returning false谓词返回 false
【发布时间】:2021-01-22 11:50:24
【问题描述】:

我在使用以下谓词时遇到问题:

treeToList(void, []).
treeToList(arbol(X, HI1, HD1), L) :- 
   treeToList(HI1, L1),
   treeToList(HD1, L2),
   append(L1, [X|L2], L).
    
maximumInList([X], X).
maximumInList([A|L], X) :-
   maximumInList(L,X1), 
   (A > X1 -> X = A; X = X1).
    
maxNodeInTree(arbol, N) :-
   treeToList(arbol, L), 
   maximumInList(L, N).

TreeToList 获取一棵树并返回一个包含所有节点的列表。同时maximumInList获取一个列表,返回列表中最大的元素。

这两个谓词单独工作都很好,但是最后一个谓词maxNodeInTree应该首先使用treeToList获取列表L,然后将其传递给maximumInList,它将返回最大元素整棵树。然而 Prolog 却返回 false

感谢任何提示!

【问题讨论】:

    标签: prolog


    【解决方案1】:

    最后一个谓词中有错字(arbol 而不是Arbol)。试试:

    maxNodeInTree(Arbol, N) :-
       treeToList(Arbol, L), 
       maximumInList(L, N).
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多