いいえ、あなたは、関数の外から関数の戻り値を設定することはできません。代わりに、呼び出し関数で変数を使用します。
たとえば、ここでは、あなたが訪問したノードを覚えておきたいと思います。 set
は、一連のオブジェクトを覚えておくのに適しています。
def explore(v):
visited.add(v)
for (v,w) in E:
if w not in visited:
explore(w)
このことについて注意のカップル:
あなたはそれを2回呼び出した場合、既に訪問したような状態は、グローバルに追跡されているので、すべてが、見られます。それはあなたがすでに持っているものに似ていますが、あなたが望むものであってもなくてもよいでしょう。 、あなたをv
とw
が何であるかの種類に応じて、また
def explore(v):
return explore_down(v, set())
def explore_down(v, visited):
visited.add(v)
for (v,w) in E:
if w not in visited:
explore(w)
:あなたは二回反復することができるようにしたい場合は、パラメータとしてこれを伝承する必要があり、好ましくは再帰を開始し第2の機能を追加しますそれらがエラーである可能性がありますnot hashable, for which see this question.
visited(v)= True'を実行するとわからない –