整数次幂一般解法
时间复杂度 O(n) 的方法可以迭代n次,然后相乘结果返回,例如求 xn 伪代码:
double pow(x,n)
{
res=x;
while(n--)
res*=x;
return res;
}
递归法
使用递归的方法可以将复杂度降低到
O(logn)
思路是比如一个数的8次幂,可以看成4次幂乘4次幂,进而分成2次幂乘2次幂,如果是奇数,在偶数结果的情况下额外乘上本身。
double myPow(double x, int n)
{
if (0 == n)
return 1.0;
if (1 == n)
return x;
if (2 == n)
return x*x;
double p = myPow(x, n / 2);
p *= p;
if (n % 2 == 0)//偶数
return p;
else//奇数
return p*x;
}