1 解题思想
就是实现计算x的n次幂,不要用系统内置库就可以
这道题的做法,具体的解法嘛,我是网上找的。。我也忘了。。就这样吧。。反正拆成这个2进制类似的
2 原题
Implement pow(x, n).
3 AC解
/**
* 这叫比赛解法。。毕竟送分。。。*/
public double myPow2(double x, int n) {
return Math.pow(x,n);
}
/**
* 正式一点好好做:
* 其实么,就是拆解一下,最后就是1+2+4+8这样二进制的,直接这么来就好了
*/
public double myPow(double x, int n) {
double base=x;
double result=1;
if(n<0)
base=1/base;
if(n==Integer.MIN_VALUE){
n++;
result=base;
}
n=Math.abs(n);
while(n>0){
if(n%2==1){
result*=base;
}
base=base*base;
n=n/2;
}
return result;
}