我在Prolog中写了一些简单的父/父/祖先函数。一切都很好,除了祖先。像这样…
?- parent(abe,homer).
true.
?- parent(homer,bart).
true.
?- ancestor(abe,bart).
false.
为什么我的祖先(abe,bart)返回false?这是我的函数…
%% returns true is X is an ancestor of Y, otherwise returns false
ancestor(X,Y) :-
parent(X,Z),
ancestor(Z,Y).
您需要做的是将其添加到数据库中,
ancestor(A, B) :- parent(A, B).
,因为子节点的父节点也是祖先。