我是这样写的。但它只成功地找到了祖父母,而不是更远的地方。我如何编写它以找到所有可能的祖先。也就是说,如果存在这样的事实,找到曾祖父母甚至更远?
ancestor(X, Y) :- parent(X, Y); parent(X,Z), parent(Z,Y).
给定
parent(greatgrand_parent, grand_parent).
parent(grand_parent, parent).
parent(parent, child).
仅退货
?- ancestor(What, child).
What = parent ;
What = grand_parent ;
false.