diff --git a/python/15_bsearch/bsearch_recursion.py b/python/15_bsearch/bsearch_recursion.py new file mode 100644 index 0000000..d16e58d --- /dev/null +++ b/python/15_bsearch/bsearch_recursion.py @@ -0,0 +1,22 @@ +""" + Author: dreamkong +""" + +from typing import List + + +def bsearch(nums: List[int], target: int) -> int: + return bsearch_internally(nums, 0, len(nums)-1, target) + + +def bsearch_internally(nums: List[int], low: int, high: int, target: int) -> int: + if low > high: + return -1 + + mid = low+int((high-low) >> 2) + if nums[mid] == target: + return mid + elif nums[mid] < target: + return bsearch_internally(nums, mid+1, high, target) + else: + return bsearch_internally(nums, low, mid-1, target)