Python函數(shù)遞歸調(diào)用實(shí)現(xiàn)原理實(shí)例解析
函數(shù)的遞歸調(diào)用:
是函數(shù)嵌套調(diào)用的一種特殊形式
具體是指:
在調(diào)用一個(gè)函數(shù)的過(guò)程中又直接或間接地調(diào)用到了本身
# 直接調(diào)用本身 def func(): print('我是func') func() func() # 函數(shù)會(huì)不斷的運(yùn)行永遠(yuǎn)不會(huì)結(jié)束,但Python不允許這種情況,會(huì)默認(rèn)限制只能調(diào)1000次. # 間接調(diào)用本身 def f1(): print('我是f1') f2() def f2(): print('我是f1') f1() f1() # 此時(shí)也相當(dāng)于直接調(diào)用本身,f1-->f2-->f1-->f2-->f1。。。同樣會(huì)不斷循環(huán)
遞歸不應(yīng)該無(wú)限的調(diào)用下去,必須在滿足某種條件下結(jié)束遞歸
# 寫(xiě)一個(gè)函數(shù)獲取0-9 def f1(n): if n == 10: return print(n) n += 1 f1(n) f1(0) # 0 1 2 3 4 5 6 7 8 9
遞歸的兩個(gè)階段:
1、回溯:一層一層調(diào)用下去
2、遞推:滿足某種條件,結(jié)束遞歸調(diào)用,然后一層一層返回。
遞歸的應(yīng)用:
例如打印出一個(gè)嵌套多層列表內(nèi)的所有元素
li = [1,2,[3,4,[5,6,[7,8],9]]] def func(l): for i in l: if type(i) is list: func(i) else: print(i) func(li)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python Celery多隊(duì)列配置代碼實(shí)例
這篇文章主要介紹了Python Celery多隊(duì)列配置代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11python神經(jīng)網(wǎng)絡(luò)使用Keras構(gòu)建RNN訓(xùn)練
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)使用Keras構(gòu)建RNN網(wǎng)絡(luò)訓(xùn)練,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2022-05-05Python線性點(diǎn)運(yùn)算數(shù)字圖像處理示例詳解
這篇文章主要為大家介紹了數(shù)字圖像處理基本運(yùn)算如何用Python詳細(xì)點(diǎn)運(yùn)算來(lái)處理數(shù)字圖像有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09淺析python遞歸函數(shù)和河內(nèi)塔問(wèn)題
這篇文章主要介紹了python遞歸函數(shù)和河內(nèi)塔問(wèn)題,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-04-04python調(diào)用自定義函數(shù)的實(shí)例操作
在本文里我們給大家整理了關(guān)于python調(diào)用自定義函數(shù)的實(shí)例操作相關(guān)內(nèi)容,有此需要的朋友們可以學(xué)習(xí)參考下。2019-06-06python破解bilibili滑動(dòng)驗(yàn)證碼登錄功能
這篇文章主要介紹了python破解bilibili滑動(dòng)驗(yàn)證碼登錄功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09Python將阿拉伯?dāng)?shù)字轉(zhuǎn)換為羅馬數(shù)字的方法
這篇文章主要介紹了Python將阿拉伯?dāng)?shù)字轉(zhuǎn)換為羅馬數(shù)字的方法,涉及Python字符串轉(zhuǎn)換及流程控制的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07