谓词返回假

Predicate returning false

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

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 得到一棵树,returns 得到一个包含所有节点的列表。同时 maximumInList 得到一个列表,returns 是列表中的最大元素。

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

如有任何提示,我们将不胜感激!

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

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