谓词返回假

时间:2021-01-22 11:50:24

标签: prolog

我在处理以下谓词时遇到问题:

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

感谢任何提示!

1 个答案:

答案 0 :(得分:2)

您在最后一个谓词中有一个拼写错误(ToExpression 而不是 arbol)。试试:

Arbol