Mam zdefiniowane są następujące dwa żebra:
edge(a,b).
edge(b,c).
add(X, L, [X | L]).
Teraz staram się rekurencyjnie zbudować drogę od a do c (a,b,c), przy użyciu to:
path(FROM,TO,W):-
edge(FROM,TO),
add(TO, [], X),
add(FROM, X, W).
path(FROM,TO,W):-
edge(FROM,Y),
path(Y,TO, W),
add(FROM, W, _).
Wydaje się, że to działa w podstawowym przypadku, jak path(a,b,X)
wyprowadzi X = [a,b]
.
Jednak path(a,c,X)
tylko wyjścia X = [b,c]
tak , jakby on po prostu przechodzi do podstawowego wariantu i kończy go tam, a nie wraca do niestabilność i wiele błędnych połączeń.
Ostatecznie, chciałbym, aby wyprowadził X = [a,b,c]
ale nie mam pomysłów.
Fyi, używam SWI-Prolog.