"?"の場所で0と1を変更して2進数を美しく生成する次のスニペットがあります。しかし、私はこのコードがどのように機能するのか分かりません。特に、行str_list [idx] = "?"。なぜですか? " idxの位置に復元が開始されます。Python再帰関数を理解しようとしています
再帰を書く際にこれについてどのように考えるべきでしょうか?ここで
は、このような再帰関数を作成する方法上の任意のアドバイスは良くなってきて私を助けるコード
def gen_bin(str_list):
if "?" not in str_list:
print "".join(str_list)
return
idx = str_list.index("?")
gen_bin(str_list[:idx] + ["0"] + str_list[idx+1:])
gen_bin(str_list[:idx] + ["1"] + str_list[idx+1:])
str_list[idx] = "?"
gen_bin(list("1??"))
です。
お時間をありがとう、
詳細な説明をありがとうございます。コードの行が何もしていないことがわかります。このコードは、2回の再帰呼び出しを行います。 1つは0、もう1つは1です。1行または1つの呼び出しで両方のサブ再帰関数を呼び出すために同じ関数を変更するにはどうすればよいですか。 – user1335161
それはあなたがしようとしていることに依存します。おそらく最も簡単な方法は2つを列挙することです: 'call( '0')、call( '1')' –