这道题其实是蛮心碎一地的,一开始我用对称性,即返回pow(x,n/2)*pow(x,n/2)总是说我超时,后来写到另外一个函数里去,还是一样,最后一定要将pow(x,n/2)赋一个值,感觉有点莫名其妙的好奇怪。可能是因为递归函数时间空间占用的太多了。
class Solution {
public:
double div(double x,int n){
if(n==0)return 1.0;
if(n==1)return x;
double half=div(x,n/2);
if(n%2==0)return half*half;
else return half*half*x;
}
double pow(double x, int n) {
if(n>=0)return div(x,n);
else if (n<0)return 1/div(x,-n);
}
};