【发布时间】:2018-03-09 02:58:18
【问题描述】:
在 comp sci 类中编写了这段代码,但我无法让它工作,每次运行它时它总是返回 false。它应该是一种递归二进制搜索方法......知道为什么它只返回false吗?
arr = [1,10,12,15,16,122,132,143,155]
def binarysearch(arr,num):
arr2 = []
if (len(arr) == 1):
if (arr[0] == num):
return 1
else:
return 0
for i in range (len(arr)/2):
arr2.append(0)
if (arr[len(arr)/2]>num):
for x in range (len(arr)/2,len(arr)):
arr2[x-(len(arr)/2)]=arr[x]
return binarysearch(arr2,num)
if(arr[len(arr)/2]<num):
for x in range(0, len(arr) / 2 ):
arr2[x] = arr[x]
return binarysearch(arr2, num)
num = raw_input("put number to check here please: ")
if(binarysearch(arr,num)==1):
print "true"
else:
print "false"
【问题讨论】:
-
您没有搜索数组的右半部分。
标签: python-2.7 recursion