Exponentiation by Squaring (Recursive) Demo

function power(x, n):
if n == 0:
return 1
half = power(x, floor(n/2))
if n mod 2 == 0:
return half * half
else:
return x * half * half