我不明白如何删除无限循环。当试图找到 祖先。
spouse(george,mel).
spouse(mel,george).
parent(george,elizabeth).
parent(george,margaret).
spouse(elizabeth,philip).
spouse(philip,elizabeth).
parent(elizabeth,charles).
parent(spencer,diana).
spouse(diana,charles).
spouse(charles,diana).
parent(X,Y):-spouse(X,Z),parent(Z,Y).
ancestor(X,Y):-parent(X,Y).
ancestor(X,Y):-parent(X,Z),ancestor(Z,Y).
由于第一条规则,Prolog似乎进入了无限循环。我真的很喜欢
避免硬编码像我必须为配偶(反身关系)的事实。但我似乎无法弄清楚这个问题与传递关系的其他问题是如何相似的。