def foo():
l = [0, 0, 0]
for i in range(3):
l[i] = random.random()
for j in l:
if j > 0.5:
for i in range(3):
l[i] = random.random()
foo()
else:
print("Returning...")
return None
return None
私の再帰関数はリストを変更しますl
。再帰呼び出しは、反復処理中にl
にネストされます。問題は、ネストされた呼び出しから戻ったときに、forループが反復しているリストが異なるものになることです(ネストされた呼び出し中にl
が上書きされるため)。再帰関数py3で変数が変更されました。
例:foo()
の最初の実行時にl = [0.7, 0.5, ...]
、次にj = 0.7
。 l
がfoo()
の最初のネストされたコールで l = [0.3, 0.86, ...]
になると仮定します。 foo()
が返された場合、値0.5
を取得するにはj
が必要ですが、その間にl
が上書きされているために発生しません。だから、
、どのように私は同時に、反復がl
に始まると、それはその最後まで同じリスト上で行われていることを確認してください、私の再帰関数でリストl
を(変更)して使用することができますか?
申し訳ありません....ループのために、コールがfoo()、ではないのfoo(カウント) – emettelatripla
あるにあなたのを編集することができます'count'を投稿して削除します。編集リンクは投稿テキストのすぐ下にあります。 –
再帰でリストを変更していません。 –