嗨,我有这个问题,我无法解决。我是 Prolog 菜鸟,我看过很多这样的家谱示例,但似乎没有一个能解决我的问题。
说我有
son(X, Y) :-
\+daughter(X, Y),
father(Y, X).
father(Y, X) :-
male(X),
son(X, Y).
我调用其中一个,它会在条件之间来回切换,因为每个条件都会满足之前的条件,因此导致本地堆栈错误。
大多数人似乎建议删除其中一个定义,但我需要回答父子查询。请帮忙,这看起来很简单,但我就是想不通。循环一次后如何中断?
TIA