Implement pow(x, n).
实现一个浮点数幂运算的问题。这里不需要考虑越界的问题,指数是int,也不需要处理分数指数的问题。为了减小运行时间,我们采取折半相乘的方案,用递归来实现。用枚举的方法也可以实现,但是代码会比较长。
class Solution {
public:
double myPow(double x, int n) {
if(x==0) //底数为零
return 0;
if(x!=0 && n==0) //指数为零
return 1;
if(x==1) //底数为1
return 1;
if(x==-1){ //底数为-1
if(n%2==0)
return 1;
else
return -1;
}
if(n<0)
return 1.0/myPow(x,-n);
double result=myPow(x, n/2);
if(n%2==0)
return result*result;
else
return result*result*x;
}
};