50. Pow(x, n) 求x的n次方

题目链接
tag:

  • Medium;

question:
  Implement pow(x, n), which calculates x raised to the power n(xn).

Example 1:

Input: 2.00000, 10
Output: 1024.00000

Example 2:

Input: 2.10000, 3
Output: 9.26100

Example 3:

Input: 2.00000, -2
Output: 0.25000
Explanation: 2-2 = 1/22 = 1/4 = 0.25

Note:

  • -100.0 < x < 100.0
  • n is a 32-bit signed integer, within the range [−231, 231 − 1]

思路:
  考虑边界条件较多,然后用到除2的数学关系式即可,我们让i初始化为n,然后看i是否是2的倍数,是的话x乘以自己,否则res乘以x,i每次循环缩小一半,直到为0停止循环。最后看n的正负,如果为负,返回其倒数,参见代码如下:

class Solution {
public:
    double myPow(double x, int n) {
        double res = 1.0;
        for (int i=n; i!=0; i /= 2) {
            if (i % 2 != 0) res *= x;
            x *= x;
        }
        return n < 0 ? 1 / res : res;
    }
};

你可能感兴趣的:(50. Pow(x, n) 求x的n次方)