Python之遞歸
- 2020 年 1 月 16 日
- 筆記
在函數內部,可以調用其他函數,如果一個函數在內部調用自身,這個函數就是遞歸函數。
def test(n): print(n) if int(n/2) == 0: return n return test(int(n/2) test(5)

遞歸特性:
1.必須有一個明確的結束條件
if int(n/2) == 0: return n #當int(n/2)的值等於0時,return 0 ==> 返回值為0,結束遞歸
2.每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減少
3.遞歸效率不高,遞歸層次過多會導致棧溢出(在電腦中,函數調用時通過棧(stack)這種結構數據實現的,每當進入一個函數調用棧就會多一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧幀不是無限的,所以遞歸調用的次數過多,會導致棧溢出)