为什么我的递归二分搜索代码返回 None 而不是 True?

Linda Hamilton
发布: 2024-10-26 03:18:27
原创
601 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板