2013-05-12 5 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

난 당신이 무슨 말을하는지 얻을 수 있지만 정의 된 친구를 주어진 수, 반드시 그 규칙은 아무도 일치하지 않을 것이다 ? 바로 거기에 뭔가가 없습니다. –

+0

하지만 이제 우정을 할 수 있습니까 (마이크, 앤젤라). ? –

+0

답변이 업데이트되었습니다 –