Python函數(shù)遞歸調(diào)用實(shí)現(xiàn)原理實(shí)例解析
函數(shù)的遞歸調(diào)用:
是函數(shù)嵌套調(diào)用的一種特殊形式
具體是指:
在調(diào)用一個(gè)函數(shù)的過程中又直接或間接地調(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)該無限的調(diào)用下去,必須在滿足某種條件下結(jié)束遞歸
# 寫一個(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)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python Celery多隊(duì)列配置代碼實(shí)例
這篇文章主要介紹了Python Celery多隊(duì)列配置代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
python神經(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-05
Python線性點(diǎn)運(yùn)算數(shù)字圖像處理示例詳解
這篇文章主要為大家介紹了數(shù)字圖像處理基本運(yùn)算如何用Python詳細(xì)點(diǎn)運(yùn)算來處理數(shù)字圖像有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
python調(diào)用自定義函數(shù)的實(shí)例操作
在本文里我們給大家整理了關(guān)于python調(diào)用自定義函數(shù)的實(shí)例操作相關(guān)內(nèi)容,有此需要的朋友們可以學(xué)習(xí)參考下。2019-06-06
python破解bilibili滑動(dòng)驗(yàn)證碼登錄功能
這篇文章主要介紹了python破解bilibili滑動(dòng)驗(yàn)證碼登錄功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
Python將阿拉伯?dāng)?shù)字轉(zhuǎn)換為羅馬數(shù)字的方法
這篇文章主要介紹了Python將阿拉伯?dāng)?shù)字轉(zhuǎn)換為羅馬數(shù)字的方法,涉及Python字符串轉(zhuǎn)換及流程控制的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07

