課程內容
Python入門課程NO61課 遞歸函數(shù)
所謂的遞歸函數(shù),是指自己調用自己的函數(shù)。這里的調用不一定是直接調用,也可以是間接地調用。舉例說明:
但這樣自身不斷的調用自身會陷入死循環(huán)當中,無法結束,因此python會拋出一個錯誤,指示該遞歸函數(shù)已超出了最大遞歸深度。因此
遞歸函數(shù)必須能夠正常終止
在設計遞歸函數(shù)時,必須定義一個退出邊界,否則函數(shù)會不斷地遞歸執(zhí)行,一旦超出Python語言所支持的遞歸深度,那么就會拋出RecursionError的錯誤異常。我們可以在函數(shù)體中使用控制語句加一段控制邏輯,當遞歸函數(shù)在條件不滿足時就終止遞歸。我們將上面的遞歸函數(shù)進行修改來輸出1-10之間的整數(shù),如下:
遞歸函數(shù)高級用法:返回值
遞歸函數(shù)較非遞歸函數(shù),會更難理解,在熟練掌握了遞歸函數(shù)的用法以后,可以寫出更加簡潔的代碼。比如計算幾個數(shù)字的和:
接下來我們進行講解:
代碼最外層是一個三元運算結構:return 0 if not numbers。這段代碼表示,如果參數(shù)numbers為空,就返回0。
接下來是調用自己else numbers[-1]+qiuhe(numbers[0:len(numbers)-1]),列表numbers非空,那么就先取出列表最后一個元素:numbers[-1]然后對列表進行切片,再將切片后的列表作為參數(shù)傳遞給qiuhe函數(shù):同學們注意這個切片的語法,每次切片都將尾部的元素排除。最后將取出的尾部元素,與遞歸函數(shù)的返回值進行相加:numbers[-1]+accumulate(numbers[0:len(numbers)-1])
遞歸函數(shù)的劣勢:
在定義遞歸函數(shù)的時候必須設計函數(shù)的邊界條件,一旦超出邊界,就終止遞歸,否則遞歸函數(shù)會不斷地執(zhí)行,不斷地消耗系統(tǒng)資源,直至被系統(tǒng)kill。

- 上一篇
Python入門課程NO60課 函數(shù)裝飾器
裝飾器是一種軟件設計模式,可以對已有的對象進行功能上的擴展,而無需改變其結構。如何使用裝飾器來進行功能上的擴展?我們得先學習Python中的閉包函數(shù)。閉包函數(shù):簡單地理解,就是函數(shù)中定義的一個內部函數(shù),該內部函數(shù)可以訪問外部函數(shù)作用域中的參數(shù),變量。使用閉包進行
- 下一篇
Python入門課程NO62課 內置函數(shù)之數(shù)學運算函數(shù)
內置函數(shù)是在Python中預先編寫好的一些基礎函數(shù),可以直接拿來使用,無需再額外編寫代碼。python官網(wǎng)有所有的內置函數(shù):在本節(jié)課中,我們主要講解一些再實際應用中經(jīng)常使用的函數(shù)。接下來講解數(shù)學運算函數(shù)。計算絕對值abs(x): 返回數(shù)參數(shù)x的絕對值。參數(shù)x必須是數(shù)值類型或能