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中SQLAlchemy使用前端頁面實(shí)現(xiàn)插入數(shù)據(jù)
這篇文章主要介紹了SQLAlchemy使用前端頁面實(shí)現(xiàn)插入數(shù)據(jù),文章內(nèi)容介紹詳細(xì)巨頭有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-03-03
淺談python為什么不需要三目運(yùn)算符和switch
下面小編就為大家?guī)硪黄獪\談python為什么不需要三目運(yùn)算符和switch。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06
在PyTorch中自定義fit()函數(shù)中的操作代碼
當(dāng)在進(jìn)行有監(jiān)督學(xué)習(xí)時(shí),我們可以使用fit()函數(shù)對模型進(jìn)行訓(xùn)練,通過迭代優(yōu)化模型的參數(shù),使其能夠更好地?cái)M合訓(xùn)練數(shù)據(jù),本文給大家介紹了在PyTorch中自定義fit()函數(shù)中的操作代碼,感興趣的同學(xué)可以跟著小編一起來看看2024-05-05
使用pyshp包進(jìn)行shapefile文件修改的例子
今天小編就為大家分享一篇使用pyshp包進(jìn)行shapefile文件修改的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12

