我的二进制搜索函数 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