二进制搜索函数在 python 中返回 None 值
Binary Search function returning None value in python
下面是我在 python 中使用递归进行二进制搜索的代码。我没有使用 num == l[mid]
,因为这是由调用此 binarySearch 的函数处理的。我只需要 return 拆分时留下列表的最后一项。
def binarySearch(l,num):
length = len(l)
if length==1:
print(l)
return l
if length % 2 == 0:
mid = (length//2) - 1
else:
mid = length//2
if num < l[mid]:
binarySearch(l[mid+1:],num)
else:
binarySearch(l[0:mid+1],num)
print(l)
打印出我想要的正确值 return 但是 return l
给我 None
而不是 l
if num < l[mid]: binarySearch(l[mid+1:],num)
没有 return 任何东西:它调用 binarySearch
并丢弃其 return 值。因此,None
被隐式地 returned。你实际上应该 return 你想要的值 returned:
if num < l[mid]:
return binarySearch(l[mid+1:],num)
else:
return binarySearch(l[0:mid+1],num)
在这里,return binarySearch(...)
表示“return 无论调用 binarySearch
returned”。
下面是我在 python 中使用递归进行二进制搜索的代码。我没有使用 num == l[mid]
,因为这是由调用此 binarySearch 的函数处理的。我只需要 return 拆分时留下列表的最后一项。
def binarySearch(l,num):
length = len(l)
if length==1:
print(l)
return l
if length % 2 == 0:
mid = (length//2) - 1
else:
mid = length//2
if num < l[mid]:
binarySearch(l[mid+1:],num)
else:
binarySearch(l[0:mid+1],num)
print(l)
打印出我想要的正确值 return 但是 return l
给我 None
而不是 l
if num < l[mid]: binarySearch(l[mid+1:],num)
没有 return 任何东西:它调用 binarySearch
并丢弃其 return 值。因此,None
被隐式地 returned。你实际上应该 return 你想要的值 returned:
if num < l[mid]:
return binarySearch(l[mid+1:],num)
else:
return binarySearch(l[0:mid+1],num)
在这里,return binarySearch(...)
表示“return 无论调用 binarySearch
returned”。