首页 > 解决方案 > 为什么我在此 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)

它没有发生,我不明白为什么会这样,因为正如我在不工作的代码中所理解的那样,列表的相同范围加上一个应该作为参数给出。你能告诉我我的错误在哪里吗?

标签: pythonbinary-search

解决方案


尝试这个:

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)

推荐阅读