Mám následující dvě hrany definice:
edge(a,b).
edge(b,c).
add(X, L, [X | L]).
Teď se snažím rekurzivně vytvořit cestu z a do c (a,b,c) pomocí té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, _).
Zdá se, že funguje dobře v základní věci jako path(a,b,X)
bude výstup X = [a,b]
.
Nicméně, path(a,c,X)
pouze výstupy X = [b,c]
,, jako kdyby to prostě dostane na základní případ, a končí to tam, spíše než jít zpátky do rekurzivní volání.
Nakonec, rád bych, aby výstup X = [a,b,c]
ale už mi došly nápady.
FYI jsem pomocí SWI-Prolog.