遞歸程式碼無法傳回真值
給定的程式碼旨在使用二分搜尋方法來確定字串中是否存在字元。但是,它沒有傳回預期的 True 值,一直回傳 None。
分析:
程式碼使用了一個遞歸函數 isIn,它接受一個字元和一個字串作為輸入。它透過在中點將字串分成兩半來執行二分搜尋。如果該字元與中點匹配,則列印一條訊息指示該字元存在並傳回 True。
如果該字元大於中點字元且中點不是字串中的最後一個字元(即,有仍然是要搜尋的字元),則函數會透過刪除前半部來更新字串。如果字元小於中點字元且中點不是字串中的第一個字元(即仍有字元要搜尋),則該函數會透過刪除後半部來更新字串。
但是,程式碼在 else 區塊的最後一行缺少 return 語句。如果沒有此 return 語句,函數將直接終止,而不會明確傳回值。這會導致 Python 隱式傳回 None,這就是函數不斷傳回 None 的原因。
解決方案:
要解決此問題,您需要新增return 語句else 區塊中的最後一行:
<code class="python">return isIn(char, aStr)</code>
透過此修改,函數將傳回遞歸呼叫的結果,如果在字串中找到該字符,則最終將傳回True。
以上是為什麼我的遞歸二分搜尋代碼會傳回 None 而不是 True?的詳細內容。更多資訊請關注PHP中文網其他相關文章!