理解 Python 遞歸函數的令人困惑的行為:為什麼 gcdIter 會回傳 None?
在處理遞歸函數時,掌握它們是至關重要的回傳機制。考慮以下 gcdIter 函數,旨在計算兩個數字的最大公約數 (GCD)。但是,對於某些輸入值(例如 306 和 136),它意外地傳回 None。
問題出在程式碼的遞歸部分:
gcdIter (a,b%a)
雖然函數產生使用相關參數遞歸呼叫自身,它無法處理該呼叫的回傳值。為了保留GCD 結果,回傳值必須沿著鏈向上傳遞:
return gcdIter (a,b%a)
此外,謹慎使用多目標變數賦值來簡化程式碼:
def gcdIter(a, b): a, b = min(a, b), max(a, b) if b % a == 0: return a return gcdIter(a, b % a)
透過解決這些問題,gcdIter 將按照預期一致地傳回任何給定輸入值的GCD。
以上是為什麼`gcdIter`在計算GCD時回傳`None`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!