Reputation: 15
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
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
Reputation: 1598
add return
in front of your 2 recursive calls at end of the function
Upvotes: 1