遞歸函數就是在函數內部,可以調用其他函數。如果壹個函數在內部調用自身本身,這個函數就是遞歸函數。
舉個例子,我們來計算階乘 n! = 1 * 2 * 3 * ... * n,用函數 fact(n)表示,可以看出:
fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n
所以,fact(n)可以表示為 n * fact(n-1),只有n=1時需要特殊處理。
於是,fact(n)用遞歸的方式寫出來就是:
def?fact(n): if?n==1: return?1 return?n?*?fact(n?-?1)
函數內部的代碼是相同的,只是針對參數不同,處理的結果不同。當參數滿足壹個條件時,函數不再執行,通常被稱為遞歸的出口,否則會出現死循環。
例如:
def?sum_numbers(num): print(num) #遞歸的出口很重要,否則會出現死循環 if?num==1: ?return sum_numbers(num-1) sum_numbers(3)