在使用 Python 開(kāi)發(fā)的過(guò)程中,避免不了會(huì)用到遞歸函數(shù)。但遞歸函數(shù)的返回值有時(shí)會(huì)出現(xiàn)意想不到的情況。
專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)長(zhǎng)寧免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
下面來(lái)舉一個(gè)例子:
>>> def fun(i):
... i += 1
... if i < 5:
... fun(i)
... else:
... return i
...
>>> r = fun(0)
>>> print(r)
比如上面這段代碼,乍一看沒(méi)什么問(wèn)題,但返回值并不是我們期望的 5,而是 None
。
>>> print(r)
None
要解決這個(gè)問(wèn)題也簡(jiǎn)單,就是在執(zhí)行遞歸調(diào)用的時(shí)候,加上 return
語(yǔ)句。
修改之后的代碼如下:
>>> def fun(i):
... i += 1
... if i < 5:
... return fun(i)
... else:
... return i
...
>>> r = fun(0)
>>> print(r)
5
現(xiàn)在輸出的結(jié)果就符合我們的預(yù)期了。
最后補(bǔ)充一句,如果想要了解這背后深層的原理,可以看看函數(shù)調(diào)用棧相關(guān)的資料,這里就不過(guò)多介紹了。
本文就到這里了,如果覺(jué)得有用的話歡迎點(diǎn)贊,轉(zhuǎn)發(fā)和關(guān)注,謝謝。
推薦閱讀: