# iterative version of the code # def find(search_list: list[int], value: int) -> int: # left: int = 0 # right: int = len(search_list) - 1 # search_list.sort() # while left <= right: # middle_index: int = (left + right) // 2 # if value < search_list[middle_index]: # right = middle_index - 1 # elif value > search_list[middle_index]: # left = middle_index + 1 # else: # return middle_index # raise ValueError(f"value not in array") # recursive version of the code def find(search_list: list[int], value: int) -> int: middle_index: int = (len(search_list) - 1) // 2 search_list.sort() if search_list == []: raise ValueError("value not in array") if value < search_list[middle_index]: return find(search_list[:middle_index], value) elif value > search_list[middle_index]: return (middle_index + 1) + find(search_list[middle_index + 1:], value) else: return middle_index