首頁  >  文章  >  後端開發  >  為什麼我的遞歸程式碼連續不回傳任何內容?

為什麼我的遞歸程式碼連續不回傳任何內容?

Barbara Streisand
Barbara Streisand原創
2024-10-27 01:11:30631瀏覽

Why Does My Recursive Code Continuously Return None?

遞歸程式碼連續回傳None

給出以下遞歸程式碼片段:

<code class="python">def isIn(char, aStr):
    ms = len(aStr)/2
    if aStr[ms] == char:
        print('i am here now')
        return True
    elif char > aStr[ms] and not ms == len(aStr)-1:
        aStr = aStr[ms+1:]
    elif char < aStr[ms] and not ms == 0:
        aStr = aStr[0:ms]
    else:
        return False
    isIn(char, aStr)

print(isIn('a', 'ab'))</code>

人們可能會遇到意外行為其中程式碼會傳回None 而不是預期的True 值。出現此問題的原因是 else 區塊中的最終遞歸呼叫缺少明確 return 語句。

修正後的程式碼應添加以下內容:

<code class="python">else:
    return isIn(char, aStr)</code>

在這種情況下,當函數遞歸時,它將遞歸呼叫的回傳值指派給函數本身。如果遞歸呼叫未能找到該字符,則返回 False,然後函數將其作為自己的值返回。

如果最終遞歸呼叫上沒有明確 return 語句,則函數會在沒有指定的情況下到達結尾傳回值。結果,它會隱式傳回 None,這就是為什麼原始程式碼一直回傳 None。

以上是為什麼我的遞歸程式碼連續不回傳任何內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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