题目:
Implement pow(x, n).
实现x的n次幂
Solution:
类似于二分的方法来优化“x*x*…x“。
要注意的是当n = INT_MIN时,反过来-n会越界,这时候需要pow(x,INT_MIN) * x 即可。
代码如下:
class Solution {
public:
double myPow(double x, int n)
{
if(n == 0 || x == 1)
return 1.0;
if(n < 0)
{
if( n == INT_MIN)
return 1.0 / (myPow(x,INT_MAX) * x);
else
return 1.0 / myPow(x,-n);
}
double half = myPow(x,n>>1);
if(n % 2 == 0)
return half * half;
else
return half * half * x;
}
};