私は以下のコードとかなり混乱しています。
変数はどのように格納され、Pythonの再帰関数で扱われますか?
def a(x):
print(x)
if x > 0:
a(x - 1)
print(x) #I am confused with this print statement
a(5)
上記のコードの出力:0
までアップ
5
4
3
2
1
0
0
1
2
3
4
5
は、私はそれが印刷さを理解する、しかしそれは昇順に印刷し、なぜ。
変数x
が変更されているので、出力がで最後に割り当てられた値xの値は0
です。
私は出力を予測:
5
4
3
2
1
0
0
0
0
0
0
0
それでは、どのように、xの値がそれトラックん...?
の説明実際に何が起こるか再帰関数と変数が格納されています。
変数 'x'は変更されません。各関数呼び出しには独自の' x'があります。 –
これは、関数が再帰的であることとは関係ありません。 'x - 1'で関数を呼び出すことは、現在のスコープ内の' x'の値を変更しません。あなたはhttp://pythontutor.com/有用であるかもしれません。 – jonrsharpe
ここでは、スタックについて少しお読みください(https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Mips/stack.html) - これは関数がローカル変数を格納する方法です、戻り値など –