首頁  >  文章  >  後端開發  >  為什麼我的遞歸二分搜尋代碼會傳回 None 而不是 True?

為什麼我的遞歸二分搜尋代碼會傳回 None 而不是 True?

Linda Hamilton
Linda Hamilton原創
2024-10-26 03:18:27498瀏覽

Why Does My Recursive Binary Search Code Return None Instead of True?

遞歸程式碼無法傳回真值

給定的程式碼旨在使用二分搜尋方法來確定字串中是否存在字元。但是,它沒有傳回預期的 True 值,一直回傳 None。

分析:

程式碼使用了一個遞歸函數 isIn,它接受一個字元和一個字串作為輸入。它透過在中點將字串分成兩半來執行二分搜尋。如果該字元與中點匹配,則列印一條訊息指示該字元存在並傳回 True。

如果該字元大於中點字元且中點不是字串中的最後一個字元(即,有仍然是要搜尋的字元),則函數會透過刪除前半部來更新字串。如果字元小於中點字元且中點不是字串中的第一個字元(即仍有字元要搜尋),則該函數會透過刪除後半部來更新字串。

但是,程式碼在 else 區塊的最後一行缺少 return 語句。如果沒有此 return 語句,函數將直接終止,而不會明確傳回值。這會導致 Python 隱式傳回 None,這就是函數不斷傳回 None 的原因。

解決方案:

要解決此問題,您需要新增return 語句else 區塊中的最後一行:

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

透過此修改,函數將傳回遞歸呼叫的結果,如果在字串中找到該字符,則最終將傳回True。

以上是為什麼我的遞歸二分搜尋代碼會傳回 None 而不是 True?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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