Python返回None而不是value

时间:2018-01-16 10:23:03

标签: python

我正在尝试在这里实现一个非常简单的二进制搜索问题:从给定目标返回数组的索引加上/减去。

但是,当我执行此代码时,我的结果始终为None。 Python似乎没有捕获我的返回值。

这是我的代码:

class Solution:
        def closestNumber(self, A, target):
        if len(A) == None:
            return -1

        if target - 1 > A[-1] or target + 1 < A[0]:
            return -1

        result = self.BinarySearch(0,len(A), A, target)
        return result

def BinarySearch(self,startIndex, endIndex, A, target):
    if startIndex > endIndex:
        return -1

    mid = (startIndex + endIndex)//2
    print(mid)
    if target == A[mid]:
        return mid

    if target + 1 == A[mid] or target - 1 == A[mid]:
        return mid

    if target + 1 > A[mid]:
        self.BinarySearch(mid, endIndex, A, target)

    if target - 1 < A[mid]:
        self.BinarySearch(startIndex, mid, A, target)


print(Solution().closestNumber([1,4,6,10,20],21))

任何帮助将不胜感激!

谢谢!

1 个答案:

答案 0 :(得分:1)

在代码的递归调用分支中缺少2个return语句:

if target + 1 > A[mid]:
    return self.BinarySearch(mid, endIndex, A, target)

if target - 1 < A[mid]:
    return self.BinarySearch(startIndex, mid, A, target)