python中的递归二进制搜索函数

python中的递归二进制搜索函数,python,Python,我的二进制搜索函数能够打印正确的值,但它不返回任何值,为什么 这里是代码的链接。 从数学导入楼层为fl 随机输入 def二进制搜索(arr、l、r、q): 如果r>=l: mid=fl((左+右)/2) 打印(“左=”,l) 打印(“right=,r) 打印(“数组的当前中间为:”,中间) 如果arr[mid]==q: 打印(“我现在在这里,mid=”,mid) 中途返回 elif arr[mid]>q: 二进制搜索(arr、0、mid、q) 其他: 二进制搜索(arr、mid、r、q) 其他

我的二进制搜索函数能够打印正确的值,但它不返回任何值,为什么

这里是代码的链接。

从数学导入楼层为fl
随机输入
def二进制搜索(arr、l、r、q):
如果r>=l:
mid=fl((左+右)/2)
打印(“左=”,l)
打印(“right=,r)
打印(“数组的当前中间为:”,中间)
如果arr[mid]==q:
打印(“我现在在这里,mid=”,mid)
中途返回
elif arr[mid]>q:
二进制搜索(arr、0、mid、q)
其他:
二进制搜索(arr、mid、r、q)
其他:
返回-1
我的列表=列表(范围(50))
随机。随机(我的列表)
我的列表。排序()
打印(“排序列表=”,我的列表)
查询=31
结果=二进制搜索(我的列表,0,len(我的列表),查询)
如果结果==-1:
打印(“31不在列表中”)
其他:
打印(“索引位置”,结果)
下面是输出。第一行打印正确的索引值,即31。 但下一行打印我没有..没有得到原因当我在函数中检查变量mid时,它的值是准确的,但当我使用result打印它时,它返回我没有

输出

i am here now and mid= 31

index location  None

您缺少返回语句:

elif arr[mid] > q:
    return binarysearch(arr, 0, mid, q)
else:
    return binarysearch(arr, mid, r, q)

请在您的问题中直接发布您的代码。您好,欢迎使用SO,您需要为任何调试提供可复制的代码示例、输入和输出。