首页 > 解决方案 > 递归二进制搜索 Python 3 打印解决方案但不返回它

问题描述

def binarySearch( a, l, r, num ):

    m = (l+r) // 2

    if l < r:

        if num <= a[m]:
            binarySearch(a, l, m, num)
        else:
            binarySearch(a, m+1, r, num)

    else:

        print( m )

如果不是 print(m) 我写 return(m) 然后尝试打印它返回 None 的函数,我不明白为什么。有人可以解释吗?谢谢

标签: pythonfunctionrecursionsearchbinary

解决方案


def binarySearch( a, l, r, num ):

    m = (l+r) // 2

    if l < r:

        if num == a[m]:
            return m

        elif num < a[m]:
            return binarySearch(a, l, m, num)

        else:
            return binarySearch(a, m+1, r, num)
    else:
        return  -1

 # If return statement with the thing that need to be return is not mentioned explicitly  by default we get None 

'''
--tested using
for i in range(0,8):
    print('result for item', i ,binarySearch( [0,1,2,5,7], 0, 5,i )) 
'''

推荐阅读