2011-12-17 11 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(fra), X).

を頼むとき

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

それは、リスト内のR2Howを返す必要がありますが、Resでこのケースは未割り当てのままです...私はどのようにそのクエリは、R2を含むリストのリストを返すようにすることができますかわからない。どんな助けもありがとう!

答えて

2

再帰アンカー(seek/2述語の最初の句)は常に第2引数として変数を返します。代わりに、空のリストを返す必要があります。

関連する問題