如何使用递归方法descendent_of来递归检查X是否为Y的后代?事实基础包括男性和女性,以及father_of / mother_of陈述。
/* Facts */
male(roy).
male(lee).
...
female(joy).
female(ana).
...
/* Rules */
grandmother_of(X, Z) :-
mother_of(X, Y),
(mother_of(Y, Z);
father_of(Y, Z)).
grandfather_of(X, Z) :-
father_of(X, Y),
(mother_of(Y, Z);
father_of(Y, Z)).
parent_of(X,Y) :-
mother_of(X,Y);father_of(X,Y).
descendent_of(X,Y) :-
*/ Recursive method here */
如何设置停止条件?此外,如果函数仅返回布尔值,则递归在prolog中如何工作?
任何评论/建议都将不胜感激。
[如果您查看descendant_of(X,Y)
,则当X
是Y
的后代时应该为真。我在这里做了一些技巧,以实现与parent_of
的一致性并将谓词ancestor_of/2
引入为
descendent_of(X,Y) :- ancestor_of(Y,X)
知道X
是Y
的祖先
X
是Y
或]的父级>X
是Z
的父级,而Z
是Y
的后代