这个 python 二进制搜索代码有什么问题,我收到索引错误

What is wrong with this python binary search code, im getting an index error

我一直收到索引溢出错误。我错过了什么吗? 我一次又一次地检查我的数组长度,但我没有看到我在哪里访问了一个不存在的值

def binary_search_helper(arr,val,low,high):
    
    mid = low + ((low+high)//2)

    if low >= high:
        return("Not F")
    
    elif val==arr[mid] :
        return (arr[mid])
    
    elif val<=arr[mid]:
        return( binary_search_helper(arr, val, low, mid-1))

    else:
        return( binary_search_helper(arr, val, mid+1, high))
    

def binary_search(arr,val):
    return binary_search_helper(arr, val, 0, len(arr)-1)


if __name__=="__main__":
    arr=[0,1,2,3,4,5]
    val=3

    ans= binary_search(arr,val)
    print(ans)

有几个错误,你可以看看我这里改了什么:

def binary_search_helper(arr,val,low,high):
    
    mid = (low+high)//2

    if val==arr[mid] :
        return (arr[mid])
    
    elif low >= high:
        return("Not F")
        
    elif val<=arr[mid]:
        return( binary_search_helper(arr, val, low, mid-1))

    else:
        return( binary_search_helper(arr, val, mid+1, high))