目录

每天一道算法题蓝桥杯Powx,n

每天一道算法题【蓝桥杯】【Pow(x,n)】

https://i-blog.csdnimg.cn/direct/7b8a624dd2a841878b48954722bf3e1f.png

思路

分情况讨论

n大于零

return 1.0/pow(x,-n);

n小于零

return pow(x/n);

n为奇数

pow(x,n/2)*pow(x,n/2)*x

n 为偶数

pow(x,n/2)*pow(x,n/2)

#define _CRT_SECURE_NO_WARNINGS 1
class Solution {
public:
    double myPow(double x, int n) {
        if (n < 0)return 1.0 / pow(x, -(long long)n);//判断大于零还是小于零
        else return pow(x, n);
    };
    double pow(double x, int n)
    {
        if (n == 0)return 1.0;
        double tmp = pow(x, n / 2);       //快速幂:把n次方不断拆分
        return n % 2 == 0 ? tmp * tmp : tmp * tmp * x;
    };

};