Python 遞歸函數返回值為 None 的解決辦法
在使用 Python 開發的過程中,避免不了會用到遞歸函數。但遞歸函數的返回值有時會出現意想不到的情況。
下面來舉一個例子:
>>> def fun(i):
... i += 1
... if i < 5:
... fun(i)
... else:
... return i
...
>>> r = fun(0)
>>> print(r)
比如上面這段代碼,乍一看沒什么問題,但返回值并不是我們期望的 5,而是 None。
>>> print(r)
None
要解決這個問題也簡單,就是在執行遞歸調用的時候,加上 return 語句。
修改之后的代碼如下:
>>> def fun(i):
... i += 1
... if i < 5:
... return fun(i)
... else:
... return i
...
>>> r = fun(0)
>>> print(r)
5
現在輸出的結果就符合我們的預期了。
最后補充一句,如果想要了解這背后深層的原理,可以看看函數調用棧相關的資料,這里就不過多介紹了。
本文就到這里了,如果覺得有用的話歡迎點贊,轉發和關注,謝謝。
推薦閱讀:

浙公網安備 33010602011771號