题目
Implement pow(x, n).
实现浮点数的n次幂求解。
n可以是负数,需要考虑,倒数操作一下即可;
直接循环n次求幂当n比较大时会比较费时,需要将其分解为2的i次幂的乘积形式;
代码:
class Solution {
public:
double pow(double x, int n) {
if(n==0)
return 1.0;
double ans=1.0;
double temp=x;
bool flag=false; //是否为负数的标志
if(n<0)
{
n=-n;
flag=true;
}
while(n>0)
{
if(n&0x01)
ans*=temp;
temp*=temp;
n=n>>1;
}
if(flag)
ans=1.0/ans;
return ans;
}
};