Python 二进制搜索不';不能给出正确的结果

Python 二进制搜索不';不能给出正确的结果,python,binary-search,Python,Binary Search,我对以下代码有问题。我试图通过二进制搜索在数组中找到给定的k元素。但是函数binSearch不会返回结果。我在StackOverflow中发现了一个类似的代码,并遵循相同的代码,但这并不重要 def binSearch(s, k, l, r): m = (l+r)//2 if l <= r: if k > s[m]: return binSearch(s,k,m+1,r) elif k < s[m]:

我对以下代码有问题。我试图通过二进制搜索在数组中找到给定的k元素。但是函数binSearch不会返回结果。我在StackOverflow中发现了一个类似的代码,并遵循相同的代码,但这并不重要

def binSearch(s, k, l, r):
    m = (l+r)//2
    if l <= r: 
        if k > s[m]:
            return binSearch(s,k,m+1,r)
        elif k < s[m]:
            return binSearch(s,k,l,m)
        elif s[m] == k:
            return m
    else:
        return -1


s = [34, 23, 12, 45, 3, 2, 76, 1, 4, 3, 6, 7]
l = 0
r = len(s)
k = 12
s.sort()
binSearch(s, k, l, r)
def箱搜索(s、k、l、r):
m=(l+r)//2
如果l s[m]:
返回箱搜索(s、k、m+1、r)
elif k
您的代码运行正常,它给出的是排序数组元素的索引,而不是原始列表索引。您已经使用了s.sort(),因此您的列表s是更新的排序列表,并且您正在从该排序列表获取元素索引

FYI,您可以使用
else:
而不是上一个
elif:
。如果它不大于或小于,那么它必须等于,所以您不必测试它。当找不到元素时,您有无限递归。您的结束测试
如果是l,那么它应该是
如果是l
我发现了问题。我只是不打印结果。我只加了以下几行,一切都很好结果=B搜索(s、k、l、r)打印(结果)```