【问题标题】:Binary Search Python returning None [duplicate]二进制搜索Python返回无[重复]
【发布时间】:2020-11-24 20:28:55
【问题描述】:

我在 5 个月前看到了一个关于堆栈溢出的类似问题,但没有得到回答。这是一个简单的二进制搜索算法,但我不明白为什么函数返回 None 而不是元素所在的索引

def binary_search(arr,hi,low,x):
    if(hi>=low):
        mid=(hi+low)//2
        if arr[mid]==x:
            print(mid)
            return mid
        elif(arr[mid]>x):
            binary_search(arr,mid-1,low,x)
        else:
            binary_search(arr,hi,mid+1,x)
    else:
        return -1
arr=[4,3,9,10,23,7,9]
x=3
y=binary_search(arr,len(arr)-1,0,x)
print(str(y))

它在 binary_search 函数中打印 1 作为中间值,但是当我打印结果时,y。我没有。

【问题讨论】:

  • 代码需要返回递归调用返回的值,即return binary_search(...)

标签: python python-3.x algorithm search binary-search


【解决方案1】:

对于递归调用binary_search 的行,您不会返回任何内容。您需要将递归调用的返回传递到此实现的堆栈。在每一行之前添加return

【讨论】:

    猜你喜欢
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    相关资源
    最近更新 更多