7

我想要的是当我定义:

marriedTo(martin, annie).

它也使以下事实成立:

marriedTo(annie, martin).

我尝试了以下方法,但它(显然)是一个无限循环。

marriedTo(X,Y) :- marriedTo(Y,X).

我将如何在 Prolog 中执行此操作?

4

2 回答 2

10

最简单的解决方法是:

marriedTo(martin, annie).
...
married(X,Y) :- marriedTo(X,Y).
married(X,Y) :- marriedTo(Y,X).

然后还有很多其他的方法、实现和语义来解决无限递归的问题......

于 2013-02-01T09:50:37.620 回答
1

毕竟我想通了:

marriedTo(X,Y) :- marriedTo(Y,Z), X = Z, !.
于 2013-11-29T18:27:16.013 回答