50. Pow(x, n)

85 阅读1分钟

题目:
实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。

算法:
方法一:递归快速幂

func myPow(x float64, n int) float64 {
    if n < 0 {
        return float64(1) / quickMul(x, n)
    }
    return quickMul(x, n)

}

func quickMul(x float64, n int) float64 {
   if n == 0 {
       return float64(1)
   }
   y := quickMul(x, n / 2)
   if n % 2 == 0 {
       return y * y
   }
   return y * y * x
}

方法二:迭代快速幂

func myPow(x float64, n int) float64 {
    if n < 0 {
        return float64(1) / quickMul(x, -n)
    }
    return quickMul(x, n)

}

func quickMul(x float64, n int) float64 {
   ans := float64(1)
   for n > 0 {
       if n % 2 == 1 {
           ans = ans * x
       } 
       x = x * x
       n = n >> 1
   }
   return ans
}