2016-10-29 2 views
0

Kann jemand erklären, wie die folgende Prolog Rekursion funktioniert?Prolog kann jemand diese Rekursion erklären

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

Ich kann den zweiten Teil verstehen, kann aber den ersten Teil heißt nicht verstehen, was ist die erste findRoute(A,A,_). tun?

+0

See [eine generische Version] (http: //stackoverflow.com/q/26946133/772868). – false

Antwort

1

Es ist der Teil, der die Rekursion stoppt, d. H. Wenn der erste Parameter gleich dem zweiten ist, stoppt die Rekursion und gibt true durch alle Rekursionsebenen zurück, wenn es auf diese Ebene gelangt ist.

Im Allgemeinen gilt die Regel, dass der erste Parameter gleich dem zweiten ist. (Überprüfen, ob wahr, wenn beide Variablen gegeben sind, weisen Sie den Wert der zweiten in die erste, wenn die zweite Variable ist und die erste gegeben ist, usw.)

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

können Sie den zweiten Absatz .. den Text in den Klammern. – theadnangondal

+0

macht Sinn ... Danke (y) – theadnangondal

Verwandte Themen