Implement pow(x, n).
思路:分治法。主要特殊情况比较多,需要全部考虑(也可以将n设为long 类型变量,来应付 INT_MIN)
class Solution {
public:
double myPow(double x, int n) {
if(n == 0)
return 1;
if(n < 0)
{
x = 1.0/x;
if(n == -2147483648) //特殊情况特殊处理
{
n = 2147483647;
return x * myPow(x,n);
}
else
n *= (-1);
return myPow(x,n);
}
if(n == 1)
return x;
if(n%2 == 0) //偶数次幂
{
double t = myPow(x,n/2);
return t*t;
}
else
{
double t = myPow(x,n/2);
return t*t*x;
}
}
};