2016-10-29 2 views
0

누군가 다음 Prolog 재귀가 어떻게 작동하는지 설명 할 수 있습니까?프롤로그가 누군가가이 재귀를 설명 할 수 있습니까

findRoute(A,A,_). 
findRoute(A,C,Path) :- 
    nextCnvZone(A,B), 
    \+ member(B,Path), 
    findRoute(B,C,[B|Path]). 

내가 두 번째 부분을 이해할 수 있지만, 일을 처음 findRoute(A,A,_). 무엇인지 즉 첫 번째 부분을 이해할 수 없었다?

+0

보기 [더 일반적인 버전 (HTTP (제 등, 변수 및 제 주어지면 상기 제 2 내지 제 값을 할당하고, 두 변수가 주어진 경우에 해당하는지 확인) : //stackoverflow.com/q/26946133/772868). – false

답변

1

첫 번째 매개 변수가 두 번째 매개 변수와 같을 때 재귀를 중지하는 부분입니다. 재귀 수준을 완료 한 경우 모든 재귀 수준을 통해 true을 반환합니다.

일반적으로 첫 번째 매개 변수는 두 번째 매개 변수와 동일하다는 규칙이 있습니다.

?- findRoute(1, 1, 5). 
true 
?- findRoute(1, 2, 5). 
false 
?- findRoute(1, X, 5). 
X = 1 
?- findRoute(X, 2, 5). 
X = 2 
+0

당신은 두 번째 단락을 자세히 설명 할 수 있습니다 .. 괄호 안의 텍스트. – theadnangondal

+0

은 의미가 있습니다 ... 감사합니다 (y) – theadnangondal

관련 문제