nums = [-1, 1,2,3] target = 3 class Solution: # Define global variables , Record the offset at the right half global num_count num_count = 0 def search(self, nums, target): global num_count if int(len(nums)) == 0: return -1 elif target in nums: mid = int(len(nums) / 2) if nums[mid] == target: // When you finally return , You need to add the offset on the right return mid+num_count elif nums[mid] > target: new_nums = nums[0:mid] return self.search(new_nums, target) elif nums[mid] < target: // No need to add on the left , You need to add an offset to the right num_count += mid new_nums = nums[mid:int(len(nums))] return self.search(new_nums, target) else: return -1 else: return -1 aa = Solution() bb = aa.search(nums, target) print(bb)