帮我找这段代码的bug出现的原因?并且给出正确的代码:def binarySearch (arr, l, r, x): if r >= l: mid = int(l + (r + l)/2) if arr[mid] == x: return mid elif arr[mid] > x: return binarySearch(arr, l, mid-1, x) else: return binarySearch(arr, mid+1, r, x) else: return -1

bluesky1年前 ⋅ 822 阅读
# bug出现的原因:
# 在求取中间索引mid时,给出的表达式有误,应为int(l + (r - l)/2)
# 正确的代码如下:
def binarySearch (arr, l, r, x): 
    if r >= l: 
        mid = int(l + (r - l)/2)
        if arr[mid] == x: 
            return mid
        elif arr[mid] > x: 
            return binarySearch(arr, l, mid-1, x)
        else: 
            return binarySearch(arr, mid+1, r, x)
    else:
        return -1

全部评论: 0

    相关推荐