有人可以解释以下Prolog递归是如何工作的吗?
findRoute(A,A,_).
findRoute(A,C,Path) :-
nextCnvZone(A,B),
\+ member(B,Path),
findRoute(B,C,[B|Path]).
我能理解第二部分,但无法理解第一部分,即第一部分findRoute(A,A,_).
在做什么?
答案 0 :(得分:1)
它是停止递归的部分,即当第一个参数等于递归停止的第二个参数时,如果它到达那个级别,则返回true
到所有递归级别。
通常,它具有第一个参数等于第二个参数的规则。 (如果给出了两个变量,检查是否为真,如果第二个变量是第一个,那么将第二个值赋给第一个,等等。)
?- findRoute(1, 1, 5).
true
?- findRoute(1, 2, 5).
false
?- findRoute(1, X, 5).
X = 1
?- findRoute(X, 2, 5).
X = 2