我很困惑與下面的代碼。
如何在Python中的遞歸函數中存儲和處理變量?
def a(x):
print(x)
if x > 0:
a(x - 1)
print(x) #I am confused with this print statement
a(5)
上面的代碼輸出:
5
4
3
2
1
0
0
1
2
3
4
5
至本0
我明白它是如何打印,但爲什麼它在升序打印。
變量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 - 這是如何函數存儲他們的局部變量,返回值等 –