每天一道算法题蓝桥杯Powx,n
目录
每天一道算法题【蓝桥杯】【Pow(x,n)】
思路
分情况讨论
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;
};
};