binary-search - 使用递归返回“无”的二进制搜索函数
问题描述
我已经为二进制搜索编写了代码。它打印中间值,但在退出函数时不返回相同的值。
def binarysearch(array,low,high,key):
mid=(low+high)//2
if array[mid]==key:
print ('arrar[mid]: ',array[mid],'mid= ', mid)
return mid
elif key> array[mid]:
binarysearch(array, low+1, high,key)
elif key<array[mid]:
binarysearch(array,low,mid-1,key)
else:
return -1
data=[1,2,3,4,5]
result=binarysearch(data,0,5,5)
print('result=',result)
输出:
arrar[mid]: 5 mid =4
result=None
解决方案
elif key> array[mid]:
binarysearch(array, low+1, high,key)
应该
elif key> array[mid]:
binarysearch(array, mid, high,key)
推荐阅读
- r - R数据框中的变量类别作为逻辑的新列变量
- visual-studio - Jenkins + Docker Compose + 集成测试
- git - 如何将差异限制为仅添加的行?
- c++ - 如何在 Opengl 中围绕世界轴而不是局部轴旋转对象?
- heatmap - 如何使用 Echarts 将边框宽度应用于 Heatmap 中的数据项?
- unix - AWK - 在查找文件中查找数据并打印“成功”或“失败”
- swift - SwiftUI 符合 ObservableObject 的 Classes 应该是 Singleton 吗?
- java - 如何使用扫描仪类编写程序应该只打印字符串值而不是 int 值
- azure - 跨租户使用 AAD 服务到服务身份验证
- c# - 无法通过酱实验室虚拟测试中的酱存储将文件上传到移动网络应用程序