TypeError:// //'list'和'int'不支持的操作数类型

时间:2018-08-15 09:29:51

标签: python python-3.6

我正在执行二进制搜索,但出现此错误:

  

TypeError:// //'list'和'int'不受支持的操作数类型

这是有问题的代码:

def binary_search(arr,val):
    if len(arr)==0 or len(arr)==1 and arr[0]!=val:
        return false

    mid=arr[len(arr)//2]


    if val==mid:
        return true


    if val<mid:
            return binary_search(len(arr//2,val))
    if val>mid:
        return binary_search(len(arr//2+1,val))

arr=[1,2,3,4,5,6]

print(binary_search(arr,3))

应该如何解决?

1 个答案:

答案 0 :(得分:1)

使用arr//2,您将列表arr除以2,从而导致异常。您应该将arr的一部分传递给递归函数:

def binary_search(arr,val):
    if len(arr)==0 or len(arr)==1 and arr[0]!=val:
        return False

    mid=arr[len(arr)//2]


    if val==mid:
        return True


    if val<mid:
            return binary_search(arr[:len(arr)//2],val)
    if val>mid:
        return binary_search(arr[len(arr)//2+1:],val)

arr=[1,2,3,4,5,6]

print(binary_search(arr,3))