我的二进制搜索函数 returns none 尽管我将 return 的值指定为 -1 但仍未找到目标
My binary search function returns none when target not found despite me specifiying return value to be -1
def binary_search_recursive(array, target, start_index, end_index):
middle_index=(start_index+end_index)//2
if start_index>end_index:
return -1
if array[middle_index]==target:
return middle_index
if array[middle_index]>target:
binary_search_recursive(array,target,start_index,middle_index-1)
else: binary_search_recursive(array,target,middle_index+1,end_index)
这个函数returns None在找不到目标的时候不是-1,这是为什么呢?如何解决?
在函数末尾的 2 个递归调用前添加 return
您忘记了第 8、9 行 [递归调用] 之前的 return
。
因此,最终代码将是:
def binary_search_recursive(array, target, start_index, end_index):
middle_index=(start_index+end_index)//2
if start_index>end_index:
return -1
if array[middle_index]==target:
return middle_index
if array[middle_index]>target:
return binary_search_recursive(array,target,start_index,middle_index-1) # return added
else: return binary_search_recursive(array,target,middle_index+1,end_index) # return added
def binary_search_recursive(array, target, start_index, end_index):
middle_index=(start_index+end_index)//2
if start_index>end_index:
return -1
if array[middle_index]==target:
return middle_index
if array[middle_index]>target:
binary_search_recursive(array,target,start_index,middle_index-1)
else: binary_search_recursive(array,target,middle_index+1,end_index)
这个函数returns None在找不到目标的时候不是-1,这是为什么呢?如何解决?
在函数末尾的 2 个递归调用前添加 return
您忘记了第 8、9 行 [递归调用] 之前的 return
。
因此,最终代码将是:
def binary_search_recursive(array, target, start_index, end_index):
middle_index=(start_index+end_index)//2
if start_index>end_index:
return -1
if array[middle_index]==target:
return middle_index
if array[middle_index]>target:
return binary_search_recursive(array,target,start_index,middle_index-1) # return added
else: return binary_search_recursive(array,target,middle_index+1,end_index) # return added