我正在尝试在这里实现一个非常简单的二进制搜索问题:从给定目标返回数组的索引加上/减去。
但是,当我执行此代码时,我的结果始终为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))
任何帮助将不胜感激!
谢谢!
答案 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)