2011-12-17 77 views
-2

下面是我用事實:如何擺脫在這種情況下,未分配的指針?

edge(route(fra), route(tog), walk). 
edge(route(fra), route(105), walk). 
edge(route(tog), route(togc), bus). 
edge(route(togc), route(sub), walk). 
edge(route(sub), route(ag), metro). 
edge(route(ag), route(n), metro). 
edge(route(n), route(a), metro). 
edge(route(a), route(r), metro). 
edge(route(re), route(m), metro). 
edge(route(m), route(v), walk). 
edge(route(105), route(t), bus). 
edge(route(t), route(vi), metro). 
edge(route(vi), route(m), metro). 
edge(route(t), route(3), walk). 
edge(route(3), route(m), bus). 

而且斷言:

seek(route(v), _). 
seek(route(R1), [[R2, How]|Res]) :- 
    edge(route(R1), route(R2), How), 
    seek(route(R2),Res). 

,當我問查詢?- seek(route(fra), X).

應該在列表中返回R2How,但Res在這種情況下,仍然未分配的......我不知道我怎樣才能解決,爲了使該查詢只返回包含R2列表的列表。任何幫助將不勝感激!

回答

2

遞歸錨(您的seek/2謂詞的第一子句)總是返回一個變量作爲第二個參數。相反,它應該返回一個空的列表。