首頁  >  文章  >  後端開發  >  為什麼`gcdIter`在計算GCD時回傳`None`?

為什麼`gcdIter`在計算GCD時回傳`None`?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-03 10:59:29901瀏覽

Why Does `gcdIter` Return `None` When Calculating GCD?

理解 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn