2016-10-29 14 views
0

次のProlog再帰がどのように機能するか説明できますか?Prolog誰かがこの再帰を説明できます

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

私は2番目の部分を理解することができますが、最初のfindRoute(A,A,_).が何をしているかすなわち最初の部分を理解することができませんでしたか?

+0

[一般的なバージョン] //stackoverflow.com/q/26946133/772868)。 – false

答えて

1

これは再帰を停止する部分です。つまり、最初のパラメータが2番目のパラメータと等しい場合、再帰がすべてそのレベルに達した場合にはtrueを返します。

一般に、最初のパラメータは2番目のパラメータと等しいというルールがあります。 (両方の変数が指定されている場合はtrueをチェックし、2番目が可変で最初のものが与えられた場合は、2番目の変数の値を最初の変数に代入します)。

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

あなたは第2段落を括弧内のテキストで詳しく説明できますか? – theadnangondal

+0

は意味があります...ありがとう(y) – theadnangondal

関連する問題