1. 程式人生 > >廖雪峰網站:學習python函數—遞歸函數(四)

廖雪峰網站:學習python函數—遞歸函數(四)

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函數—遞歸函數(四)