原题:
Implement pow(x, n).
这个题就是求x的n次方
先来个牛x的代码:
class Solution {
public:
double pow(double x, int n) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
return std::pow(x,n);
}
};
好了,步入正题。。。。
思想就是用二叉的思想,比如求x的32次方,先求x的16次方,然后求这个数的平方
这个题需要考虑x的负数次方,先求正的结果,然后求个倒数就可以了。。。。
代码(24 ms):
class Solution {
public:
double pow(double x, int n) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
if(n==1) return x;
else if (n==0) return 1;
else if(n>0){
double temp = pow(x,n/2);
return temp*temp*pow(x,n%2);
}
else{
double temp = pow(x,(0-n)/2);
return 1/(temp*temp*pow(x,(0-n)%2));
}
}
};