快速幂计算 pow(x, n)
double myPow(double x, int n)
{
long long N = n;
if (N < 0) // 输入处理
{
x = 1 / x;
N = -N;
}
double ans = 1;
double current_product = x; // 保存第n次迭代时的值
//for(unsigned long long i= N; i>0; i>>=1)
for (long long i = N; i ; i /= 2)
{
if ((i % 2) == 1)
{
ans = ans * current_product;
}
current_product = current_product * current_product; // 供下次使用
}
return ans;
}
时间复杂度: 我们至多需要多进行一次累乘操作,时间复杂度为***O(logn)***
空间复杂度:***O(1)***, 我们只需要两个变量一个保存x另一个保存返回的结果ans
*, 我们只需要两个变量一个保存x另一个保存返回的结果ans