【问题标题】:What is wrong with this python binary search code, im getting an index error这个python二进制搜索代码有什么问题,我得到一个索引错误
【发布时间】:2021-08-17 23:43:39
【问题描述】:

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

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)

【问题讨论】:

  • 你能分享完整的堆栈跟踪吗?
  • 是拼写错误还是您将 return 作为函数调用?
  • 第 26 行,在 ans= binary_search(arr,val) 文件“C:\Users\Sanket\AppData\Local\Programs\Python\Python39\binry.py”,第 19 行,在 binary_search 返回 binary_search_helper(arr, val, 0, len(arr)-1) 文件“C:\Users\Sanket\AppData\Local\Programs\Python\Python39\binry.py”,第 15 行,在 binary_search_helper 返回(binary_search_helper (arr, val, mid+1, high)) 文件“C:\Users\Sanket\AppData\Local\Programs\Python\Python39\binry.py”,第 8 行,在 binary_search_helper elif val==arr[mid] 中: IndexError:列表索引超出范围>>>

标签: python arrays binary-search


【解决方案1】:

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

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))

【讨论】:

  • 是的,这行得通,我也放错了括号,所以我有一些错误,谢谢你的帮助
  • 你能接受我的回答来结束这个问题吗?
  • 我是 stackoverflow 的新手,所以我不知道这个
猜你喜欢
  • 1970-01-01
  • 2015-12-22
  • 2014-05-11
  • 1970-01-01
  • 2014-12-30
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多