我正在执行二进制搜索,但出现此错误:
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))
应该如何解决?
答案 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))