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
現在輸出的結果就符合我們的預期了。
最後補充一句,如果想要了解這背後深層的原理,可以看看函數調用棧相關的資料,這裡就不過多介紹了。
本文就到這裡了,如果覺得有用的話歡迎點贊,轉發和關注,謝謝。
推薦閱讀:
- 電腦經典書籍
- 技術部落格: 硬核後端開發技術乾貨,內容包括 Python、Django、Docker、Go、Redis、ElasticSearch、Kafka、Linux 等。
- Go 程式設計師: Go 學習路線圖,包括基礎專欄,進階專欄,源碼閱讀,實戰開發,面試刷題,必讀書單等一系列資源。
- 面試題匯總: 包括 Python、Go、Redis、MySQL、Kafka、數據結構、演算法、編程、網路等各種常考題。