python - 如何在此代码中返回位置而不是 None (二分查找)

标签 python

如果键等于lst[mid],我尝试使用 return mid 返回二分搜索中的位置,但它给出的是 None 。我能够打印中间:

def binary_search(lst,l,r,key):
    print (lst[l:r])
    mid = (l + r) // 2

    if key == lst[mid]:
        print([lst[mid]])
        #print(mid)
        return mid

    elif key > lst[mid]:
        l = mid + 1
        binary_search(lst,l,r,key)

    else:
        r = len(lst[:mid])
        binary_search(lst,l,r,key)


list = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

print(binary_search(list, 0, len(list), 14 ))

最佳答案

当您递归调用binary_search时,您需要返回结果。例如:

def binary_search(lst,l,r,key):
    print (lst[l:r])
    mid = (l + r )//2

    if key == lst[mid]:
        print ([lst[mid]])
        #print (mid)
        return mid

    elif key > lst[mid]:
        l = mid + 1
        return binary_search(lst,l,r,key) # return me

    else:
        r = len(lst[:mid])
        return binary_search(lst,l,r,key) # and me

关于python - 如何在此代码中返回位置而不是 None (二分查找),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55752231/

相关文章:

python - Kubernetes POD 重启

python - 值错误 : Shape must be rank 2 but is rank 1 for 'MatMul' (op: 'MatMul' ) with input shapes: [2], [2,3]

python - 使用 Python 实现 TFS 自动化

python - 无法将函数输出分配给列

python - 时间序列的傅里叶变换(fft),但清理数据的两端相互靠近

python - 从秩亏矩阵中提取线性独立行的例程

python按空格和换行符拆分字符串

python - 在 Mac OSX 上的 anaconda 中导入 tensorflow 时出错

python - 使用Python进行Azure表存储查询-读取整数列

python - pyQt4 QGraphicsView 需要鼠标事件帮助