Implement pow(x, n).
根据n的取值分三种情况,n>0、n==0和n<0,用循环依次累计乘法。
前几次提交结果为Time Limit Exceeded,改进最后ac版本如下:
分治思想: x^n = x^(n/2) * x^(n/2) * x^(n%2),将x的n次方降幂为n/2,讨论n的奇偶性,如果n为奇数,则多乘一个v。
class Solution {
public:
double myPow(double x, int n) {
if(n<0) return 1.0/power(x,-n);
else return power(x,n);
}
private:
double power(double x,int n){
if(n==0) return 1;
double v=power(x,n/2);
if(n%2==0) return v*v;
else return v*v*x;
}
};