2013-05-12 154 views
0

我試圖定義的「我的朋友的朋友就是我的朋友」,在序言中的規則,我有以下代碼:序言陷入無限循環

friends(john,jake). 
friends(mike,hans). 
friends(hans,robert). 
friends(robert,angela). 

mutual_friendship(X,Y):- 
    friends(X,Y); 
    friends(Y,X). 

friendship(X,Y):- 
    mutual_friendship(X,Y),!; 
    mutual_friendship(Y,Z), friendship(Z,X). 

而且它確實是非常好,它能夠通過漢斯和羅伯特發現邁克和安吉拉之間的友誼,問題是當我試圖找到約翰和安吉拉之間的友誼時,例如,誰沒有聯繫,但程序陷入無限循環。

回答

1

mutual_friendship/2在這裏沒有多少關係,我想。

而對於給定的事實

friends(john,jake). 
friends(mike,hans). 
friends(hans,robert). 
friends(robert,angela). 

,我們可以得到

?- friendship(john,angela). 
false. 

?- friendship(mike,angela). 
true . 
+0

我明白你在說什麼,但鑑於已定義的朋友,想必這條規則將匹配任何人?有些事情不正確。 – 2013-05-12 16:18:38

+0

但你現在可以做友誼(邁克,安吉拉)。 ? – 2013-05-12 17:22:31

+0

答案更新 – 2013-05-12 22:01:55