I'm writing a Python program to find the target in 2D array recursively, to solve this question. I'm using a binary search method to recursively find if target exist, but it gave me this maximum recursion depth exceeded error. Any suggestions?
My code:
def searchMatrix(self, matrix, target):
small = [0,0]
big = [len(matrix)-1,len(matrix[0])-1]
return self.searchUtil(matrix,target,small,big)
def searchUtil(self,matrix,target,small,big):
if big >= small:
#find the mid target
midx,midy = (small[0]+big[0])/2,(small[1]+big[1])/2
if matrix[midx][midy] == target:
return True
#if mid is >= target, it will exclude all the element smaller than it
if matrix[midx][midy] >= target:
return self.searchUtil(matrix,target,[midx,0],[midx,midy-1]) or self.searchUtil(matrix,target,[0,midy],[midx-1,midy]) or self.searchUtil(matrix,target,[0,0],[midx-1,midy-1])
else:
#if mid is < target, it will exclude all the element bigger than it
return self.searchUtil(matrix,target,[midx+1,0],[len(matrix)-1,midy]) or self.searchUtil(matrix,target,[0,midy+1],[midx,len(matrix[0])-1]) or self.searchUtil(matrix,target,[midx+1,midy+1],[len(matrix)-1,len(matrix[0])-1])
else:
return False