We use Divide and Conquer.
solve(x, n):- Base case: If
n == 0, return 1. half = solve(x, n // 2).- If
nis even: returnhalf * half. - If
nis odd: returnhalf * half * x.
- Base case: If
- In the main function, if
n < 0: return1 / solve(x, -n).
- Time Complexity: O(log N).
- Space Complexity: O(log N).
def my_pow(x, n):
def solve(x, n):
if n == 0: return 1
half = solve(x, n // 2)
if n % 2 == 0:
return half * half
else:
return half * half * x
if n < 0:
return 1 / solve(x, abs(n))
return solve(x, n)