Hint
Each new step that is taken, has to be remembered. Look at the
base case of the recursion (travel(X,Y) :-
onestep(X,Y).
)first and extend it so that
travel
records in its third argument that a step
from X
to Y
was taken.
Then look at the recursive rule:
travel(X,Y) :- onestep(X,Z), travel(Z,Y).The clause should return a structure representing that a step from
X
to Z
was taken and what is the path
that has to be taken to get from Z
to
Y
. This path is computed by the recursive call to the
predicate travel
.