私はこのすべての可能な大文字と小文字を生成するためにこの再帰関数を使用します。ここで再帰とジェネレータの例についての説明が必要
は、コードサンプルと出力されます:
def test (name):
if not name:
yield ""
else:
first=name[:1]
for sub in test(name[1:]):
yield first.lower()+sub
yield first.upper()+sub
#print (first)
for x in test("abc"):
print (x)
出力は次のようになります:私は2つの降伏関数の下に印刷機能を追加した場合
abc
Abc
aBc
ABc
abC
AbC
aBC
ABC
と:
print(first)
出力は次のようになります。
abc
Abc
a
aBc
ABc
a
b
abC
AbC
a
aBC
ABC
a
b
c
各ステップの明確な説明と、何が起こっているのか、なぜこれらの価値があるのか、どのように機能するのか、再帰と発電機が一緒に私をここで失いました。
あなたは発電機を扱っているという事実はここに違いはありません。 'yield'の代わりにあなたが' rege'をして再編成するのであれば、まったく同じになります。 _slicing_に慣れていれば、ジェネレータも理解しにくいはずです。最終的な発言として、「最初に」印刷することは、あなたを遠くに理解させることはありません。関数が呼び出されるたびに関数に入る**引数**を出力してみてください。 –
ご返信ありがとうございます.... は、はい私はすでにそれを試してみましたが、私は 引数が 引数は 引数が「C」 引数が渡された「」 を通過した「BC」を渡されたが、問題は、あなたが理解している場合である「ABC」渡された私の心の中ですることになった、まさにました世代と再帰..ちょうど私にこのプログラムの痕跡を与えて...私はちょうどステップバイステップで動作する方法を学びたい... なぜそれが abc、Abc then aBC ...コードから次の呼び出し "最初に "b"と一致する必要があります!! 私はここで欠場する再帰について何かあります! –