位置:首頁 > 軟件操作教程 > 編程開發(fā) > Python > 問題詳情

遞歸函數在python的作用

提問人:楊紫紅發(fā)布時間:2020-11-26
在函數內部,可以調用其他函數。如果一個函數在內部調用自身本身,這個函數就是遞歸函數。
舉個例子,我們來計算階乘 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)

遞歸函數的優(yōu)點是定義簡單,邏輯清晰。理論上,所有的遞歸函數都可以寫成循環(huán)的方式,但循環(huán)的邏輯不如遞歸清晰。
使用遞歸函數需要注意防止棧溢出。在計算機中,函數調用是通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由于棧的大小不是無限的,所以,遞歸調用的次數過多,會導致棧溢出。

繼續(xù)查找其他問題的答案?

相關視頻回答
回復(0)
返回頂部