递归代码连续返回 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中文网其他相关文章!