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)這種結構數據實現的,每當進入一個函數調用棧就會多一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧幀不是無限的,所以遞歸調用的次數過多,會導致棧溢出)