谓词返回假
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).
我在使用以下谓词时遇到问题:
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).