获得" a" as" none" everytimes..i如果元素(即键)出现在列表中然后返回它,则递增c的值。但是为什么我没有得到答案。请注意:列表已经排序
list=[1,2,2,4,6,7,8,8,9]
def binarysearch(list,key,s,e,c):
if(s<=e):
mid=int((s+e)/2)
if (key<list[mid]):
binarysearch(list,key,s,mid,c)
elif list[mid]==key:
c=c+1
return c
else:
binarysearch(list,key,mid+1,e,c)
else:
return c
key=2
a=binarysearch(list,key,0,len(list)-1,0)
print(a)
答案 0 :(得分:0)
您必须始终返回递归的结果:
return binarysearch(list,key,s,mid,c)
和
return binarysearch(list,key,mid+1,e,c)
毫无疑问,这是作业,但万一你确实真正需要这个功能,stdlib bisect
模块中提供了这个功能。
答案 1 :(得分:0)
每当你有一个功能并且不告诉他们返回某些东西时,在这种情况下:
if (key<list[mid]):
binarysearch(list,key,s,mid,c)
和
else:
binarysearch(list,key,mid+1,e,c)
你将得不到任何类型的回复
答案 2 :(得分:0)
实际上你忘了返回每个函数调用的结果。 您只需在代码中添加 return 语句,否则这是我的代码。
def binarysearch(l, low, high, key):
while True:
if low > high:
return -1
mid = (low + high) / 2
if l[mid] == key:
return mid
if l[mid] > key:
high = mid - 1
else:
low = mid + 1
return binarysearch(l, low, high, key)