二进制搜索函数在 python 中返回 None 值

Binary Search function returning None value in python

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

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 但是 return l 给我 None 而不是 l

if num < l[mid]: binarySearch(l[mid+1:],num) 没有 return 任何东西:它调用 binarySearch 并丢弃其 return 值。因此,None 被隐式地 returned。你实际上应该 return 你想要的值 returned:

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

在这里,return binarySearch(...) 表示“return 无论调用 binarySearch returned”。