Here's a Python version of the pseudocode mentioned in comments
def exp(x, n):
if n < 0:
return exp(1 / x, -n)
elif n == 0:
return 1
elif n == 1:
return x
elif n % 2 == 0:
return exp(x * x, n / 2)
else:
return x * exp(x * x, (n - 1) / 2)