【问题标题】:Recursive Binary Search Python 3 prints solution but doesn't return it递归二进制搜索 Python 3 打印解决方案但不返回它
【发布时间】:2019-01-25 09:56:06
【问题描述】:
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 )

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

【问题讨论】:

标签: python function recursion search binary


【解决方案1】:
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 )) 
'''

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2021-11-03
    • 2021-02-04
    • 2013-12-29
    相关资源
    最近更新 更多