在函數內部, 可以調用其他函數。 如果一個函數在內部調用自身本身, 這個函數就是遞迴函數。
舉個例子, 我們來計算階乘 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)用遞迴的方式寫出
分類:python
python中遞迴函數的使用:
def division(n): print(n) if n/2==0: return n#遞迴特性一:
必須有一個明確的結束條件 return division(n/2)#遞迴特性而:
每次遞迴都是為了讓問題規模變小division(10)#遞迴特性三:
遞迴層次過多會導致棧溢出, 且效率不高這種方式運行python檔會報:
RecursionError:
maximum recursion depth exceeded while calling a Python object錯誤原因是有小數的存在, 有科學技術法的出現會導致遞迴一直進行, 所以需要將n/2轉換為int類型如下:
def division(n):
print(n) if int(n/2)==0:
return n#遞迴特性一:
必須有一個明確的結束條件
return division(int(n/2))#遞迴特性而:
每次遞迴都是為了讓問題規模變小division(10)#遞迴特性三:
遞迴層次過多會導致棧溢出, 且效率不高運行結果如下:10
5
2
1