递归代码无法返回真值
给定的代码旨在使用二分搜索方法确定字符串中是否存在字符。但是,它没有返回预期的 True 值,一直返回 None。
分析:
代码使用了一个递归函数 isIn,它接受一个字符和一个字符串作为输入。它通过在中点将字符串分成两半来执行二分搜索。如果该字符与中点匹配,则打印一条消息指示该字符存在并返回 True。
如果该字符大于中点字符并且中点不是字符串中的最后一个字符(即,有仍然是要搜索的字符),该函数通过删除前半部分来更新字符串。如果字符小于中点字符并且中点不是字符串中的第一个字符(即仍有字符要搜索),则该函数通过删除后半部分来更新字符串。
但是,该代码在 else 块的最后一行缺少 return 语句。如果没有此 return 语句,函数将直接终止,而不会显式返回值。这会导致 Python 隐式返回 None,这就是函数不断返回 None 的原因。
解决方案:
要解决此问题,您需要添加 return 语句else 块中的最后一行:
<code class="python">return isIn(char, aStr)</code>
通过此修改,函数将返回递归调用的结果,如果在字符串中找到该字符,则最终将返回 True。
以上是为什么我的递归二分搜索代码返回 None 而不是 True?的详细内容。更多信息请关注PHP中文网其他相关文章!