【发布时间】:2020-11-24 20:28:55
【问题描述】:
我在 5 个月前看到了一个关于堆栈溢出的类似问题,但没有得到回答。这是一个简单的二进制搜索算法,但我不明白为什么函数返回 None 而不是元素所在的索引
def binary_search(arr,hi,low,x):
if(hi>=low):
mid=(hi+low)//2
if arr[mid]==x:
print(mid)
return mid
elif(arr[mid]>x):
binary_search(arr,mid-1,low,x)
else:
binary_search(arr,hi,mid+1,x)
else:
return -1
arr=[4,3,9,10,23,7,9]
x=3
y=binary_search(arr,len(arr)-1,0,x)
print(str(y))
它在 binary_search 函数中打印 1 作为中间值,但是当我打印结果时,y。我没有。
【问题讨论】:
-
代码需要返回递归调用返回的值,即
return binary_search(...)
标签: python python-3.x algorithm search binary-search