首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在此代码中返回位置而不是无(二进制搜索)

如何在此代码中返回位置而不是无(二进制搜索)
EN

Stack Overflow用户
提问于 2019-04-19 02:55:56
回答 1查看 41关注 0票数 2

我正在尝试使用return mid返回二进制搜索中的位置,如果key等于lst[mid],但它没有给出任何结果。我可以打印mid:

代码语言:javascript
复制
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 ))
EN

回答 1

Stack Overflow用户

发布于 2019-04-19 02:57:35

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

代码语言:javascript
复制
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
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55752231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档