Python函數(shù)遞歸調(diào)用實現(xiàn)原理實例解析
函數(shù)的遞歸調(diào)用:
是函數(shù)嵌套調(diào)用的一種特殊形式
具體是指:
在調(diào)用一個函數(shù)的過程中又直接或間接地調(diào)用到了本身
# 直接調(diào)用本身
def func():
print('我是func')
func()
func()
# 函數(shù)會不斷的運行永遠(yuǎn)不會結(jié)束,但Python不允許這種情況,會默認(rèn)限制只能調(diào)1000次.
# 間接調(diào)用本身
def f1():
print('我是f1')
f2()
def f2():
print('我是f1')
f1()
f1()
# 此時也相當(dāng)于直接調(diào)用本身,f1-->f2-->f1-->f2-->f1。。。同樣會不斷循環(huán)
遞歸不應(yīng)該無限的調(diào)用下去,必須在滿足某種條件下結(jié)束遞歸
# 寫一個函數(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
遞歸的兩個階段:
1、回溯:一層一層調(diào)用下去
2、遞推:滿足某種條件,結(jié)束遞歸調(diào)用,然后一層一層返回。
遞歸的應(yīng)用:
例如打印出一個嵌套多層列表內(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神經(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)練,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>2022-05-05
Python將阿拉伯?dāng)?shù)字轉(zhuǎn)換為羅馬數(shù)字的方法
這篇文章主要介紹了Python將阿拉伯?dāng)?shù)字轉(zhuǎn)換為羅馬數(shù)字的方法,涉及Python字符串轉(zhuǎn)換及流程控制的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07

