【问题标题】:Binary Search function returning None value in python [duplicate]在python中返回None值的二进制搜索函数[重复]
【发布时间】:2021-01-19 02:24:23
【问题描述】:

下面是我在 python 中使用递归进行二分搜索的代码。我没有使用num == l[mid],因为这是由调用此 binarySearch 的函数处理的。我只需要在拆分时返回列表的最后一项。

def binarySearch(l,num):
    length = len(l)
    
    if length==1:
        print(l)
        return l

    if length % 2 == 0:
        mid = (length//2) - 1
    else:
        mid = length//2
        
    if num < l[mid]:
        binarySearch(l[mid+1:],num)
    else:
        binarySearch(l[0:mid+1],num)

print(l) 打印出我想要返回的正确值,但return l 给了我None 而不是l

【问题讨论】:

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


    【解决方案1】:

    if num &lt; l[mid]: binarySearch(l[mid+1:],num) 不返回任何内容:它调用binarySearch 并丢弃其返回值。因此,None 被隐式返回。您实际上应该返回您想要返回的值:

    if num < l[mid]:
        return binarySearch(l[mid+1:],num)
    else:
        return binarySearch(l[0:mid+1],num)
    

    这里,return binarySearch(...) 的意思是“返回对 binarySearch 的调用返回的任何内容”。

    【讨论】:

    • 谢谢!它奏效了。
    猜你喜欢
    • 2020-11-24
    • 2022-12-25
    • 2023-01-12
    • 2021-05-16
    • 2019-03-02
    • 1970-01-01
    • 2015-02-10
    • 2016-05-03
    • 2016-07-01
    相关资源
    最近更新 更多