50. Pow(x, n)

题目

链接

Implement pow(x, n).

思路

将加法运算(*)变成乘法运算(^)。 比如:

2^9 = 2* (2^(2^2))

代码

# @param {Float} x
# @param {Integer} n
# @return {Float}
def my_pow(x, n)
  if x == 0 then return 0 end
  if n == 0 then return 1 end
  if n == 1 then return x end
  if n < 0 then return 1.0/my_pow(x,-n) end
  res = 1
  while (n != 0)
    t = n % 2
    res *= if t == 0 then 1 else x end
    x = x**2
    n = (n-t)/2
  end
  res
end