思路:正常的累乘思路,运行时间过长,会出现运行超时无法通过。所以可以通过递归算法,每次计算n的一半,并且考虑n的奇偶性,当n为奇数时,返回xhalfhalf,当n为偶数时,返回half*half。
class Solution {
public:
double myPow(double x, int n) {
if (n<0) return 1/power(x,-n);
return power(x,n);
}
double power(double x,int n)
{
if(n==0) return 1;
double half=power(x,n/2);
if(n%2==0) return half*half;
return x*half*half;
}
};