我正在尝试编写路由功能,但似乎无法获得所需的结果。这是到目前为止的代码。Predecessor 找到链接到 N 的节点并将其作为 P 返回。
traceroute(_,L) :- member((A,A),L).
traceroute(N,L) :-
predecessor(N,P),
append(N,L,L1),
traceroute(P,L1).
当我运行traceroute(placeA, Y).
它时,它会返回此数据..
Y = [ (_G575, _G575)|_G579] .
基本上对于 traceroute 的第一行,如果任何成员是其自身的前身,我将尝试终止递归。第二部分应该遍历所有节点并将它们添加到列表(L)中。
节点存储为 [(placeA,placeB),(placeB,placeC)],列表应存储为 [placeA,placeB,placeC]
我不明白为什么我会得到这些结果。