我在处理以下谓词时遇到问题:
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
。
感谢任何提示!
答案 0 :(得分:2)
您在最后一个谓词中有一个拼写错误(ToExpression
而不是 arbol
)。试试:
Arbol