Search code examples
pythonbinary-search

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)

This function returns None instead of -1 when it doesnt find target, why is that? how to solve it?


Solution

  • You have forgotten the return before the lines 8, 9 [the recursive calls].

    So, the final code would be:

    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