一、问题描述
Implement pow(x, n).
二、问题分析
设计类题目。可以根据n的取值正负以及0来分别处理。再求x的n次方时,为了快速接近n显然需要成倍的相乘(换个思路就是成倍的相除,需要注意n的奇偶性),即变异的二分查找法。
三、Java AC代码
public double myPow(double x, int n){
if (n==0) {
return 1.0d;
}
if(n<0){
x = 1/x;
n = -n;
}
double ans = 1;
while(n>0){
if((n&1)==1) ans *= x;
x *= x;
n >>= 1;
}
return ans;
}