首页  >  文章  >  后端开发  >  为什么我的递归二分搜索代码返回 None 而不是 True?

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

Linda Hamilton
Linda Hamilton原创
2024-10-26 03:18:27498浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn