python - 为什么我在此 Python 二进制搜索中收到“RecursionError:比较中超出最大递归深度”错误?
问题描述
我写了这个二分搜索作为我的 Uni 的一项任务:
def bin_search(l,i,start,end):
if start >= end:
return False
else:
pos = (start + end) // 2
if i == l[pos]:
return True
elif i < l[pos]:
return bin_search(l,i,start,pos)
else:
return bin_search(l,i,pos,end)
我不断收到RecursionError: maximum recursion depth exceeded in comparison
错误消息。如果我将最后一行更改为:
return bin_search(l,i,pos + 1,end)
它没有发生,我不明白为什么会这样,因为正如我在不工作的代码中所理解的那样,列表的相同范围加上一个应该作为参数给出。你能告诉我我的错误在哪里吗?
解决方案
尝试这个:
def bin_search(l,i,start = 0,end):
if start >= end:
return False
else:
pos = (start + end) // 2
if i == l[pos]:
return True
elif i < l[pos]:
return bin_search(l,i,start + 1,pos)
else:
return bin_search(l,i,pos + 1,end)
推荐阅读
- go - Fabric GO SDK 的背书政策问题
- javascript - k6 - 带有 *.crt 文件的配置文件中的 tlsAuth
- sql - 使用 WITH 子句声明和使用变量
- javascript - 随机滚动到一个长度并单击列表中的可查看元素
- c# - 如何在 Visual Studio 安装项目的启动条件下检查 .Net Core 版本
- android - ADT 没有显示我的手机通过 USB 数据线连接到电脑
- mysql - 我的 SQL 查询以获得相互/朋友的追随者
- node.js - 使用 MongoDB 4.0 查找函数返回匹配元素
- scala - Scala 弃牌与 Play!折叠
- c# - System.Runtime.InteropServices.ExternalException (0x80004005):GDI+ 中发生一般错误