遞歸程式碼連續回傳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中文網其他相關文章!