A Python program may throw the ‘Maximum depth exceeded’ error because of two things:
Remember that in recursive codes, system stack is updated for every recursive call.
Consider the example below:
def calc_power(a, exp):
if exp == 0:
return 1
temp = calc_power(a, exp/2)
temp *= temp
return a*temp if exp%2 else temp
This code gives a runtime error.
In the above code, there is an infinite recursive call that never reaches the base case (i.e., exp == 0) because the /
symbol in Python returns a float value, so, it never returns an exact 0 integer value. Therefore, the solution to this kind of problem is to use integer division (//
).
def calc_power(a, exp):if exp == 0:return 1temp = calc_power(a, exp/2) # infinite looptemp *= tempreturn a*temp if exp%2 else tempprint (calc_power(5, 2))
If there is no infinite loop in the code, try increasing the size of the system stack by importing the sys
module:
import sys
sys.setrecursionlimit(10000)