Gasser Abdelrahman
Gasser Abdelrahman

Reputation: 15

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?

Upvotes: 0

Views: 65

Answers (2)

CoolCoder
CoolCoder

Reputation: 822

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

Upvotes: 1

Bing Wang
Bing Wang

Reputation: 1598

add return in front of your 2 recursive calls at end of the function

Upvotes: 1

Related Questions