分治法。
- 简单,考虑到大于0,等于0,小于0的各种可能。
C++代码:
class Solution {
public:
/**
* @param x the base number
* @param n the power number
* @return the result
*/
double myPow(double x, int n) {
if (x==0) {
return 0;
}
if (n==1 ) {
return x;
}
if (n==0) {
return 1;
}
if (x== -1) {
return 1/x;
}
if (n>0) {
if (n%2 == 0) {
return myPow(x,n/2) * myPow(x,n/2);
} else {
return myPow(x,n/2) * myPow(x,n/2+1);
}
} else {
if (n%2 == 0) {
return 1/(myPow(x,-n/2) * myPow(x,-n/2));
} else {
return 1/(myPow(x,-n/2) * myPow(x,-n/2+1));
}
}
}
};