廖雪峰網站:學習python函數—遞歸函數(四)
阿新 • • 發佈:2018-07-24
else 簡單 n-1 turn 使用 move 移動 導致 棧溢出
# 在函數內部,可以調用其他函數。如果一個函數在內部調用自身本身,這個函數就是遞歸函數 # 計算階乘n! = 1 x 2 x 3 x ... x n,用函數fact(n)表示,可以看出: # fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n # 使用遞歸函數的優點是邏輯簡單清晰,缺點是過深的調用會導致棧溢出。 def fact(n): if n==1: return 1 return n * fact(n-1) print(‘fact(1) =‘, fact(1)) print(‘fact(5) =‘, fact(5)) print(‘fact(10) =‘, fact(10)) # 利用遞歸函數移動漢漢諾塔: def move (n, a, b, c): if n == 1: print(‘move‘, a, ‘-->‘, c) else: move(n-1, a, c, b) move(1, a, b, c) move(n-1, b, a, c) move(4, ‘A‘, ‘B‘, ‘C‘)
廖雪峰網站:學習python函數—遞歸函數(四)