实现 pow(x,n)
注意事项
不用担心精度,当答案和标准输出差绝对值小于1e-3
时都算正确
样例
Pow(2.1, 3) = 9.261
Pow(0, 1) = 0
Pow(1, 0) = 1
public class Solution {
/**
* @param x the base number
* @param n the power number
* @return the result
*/
//迭代
public double myPow_it(double x, int n) {
if(n==0)
return 1.0;
double res = 1;
double curx=x;
int flag=n;
n = Math.abs(n);
while(n!=1){
while(n%2!=1 && n!=0){
curx*=curx;
n = n/2;
}
if(n%2==1 && n!=1){
res = res*curx;
n--;
}
}
res = res*curx;
return flag>0?res:1/res;
}
//递归
public double myPow(double x, int n) {
double res = pow(x,n>0?n:-n);
return n>0?res:1/res;
}
double pow(double x, int n){
if(n==0) return 1;
if(n==1) return x;
double tmp = pow(x, n/2);
if(n%2==1){
return tmp*tmp*x;
}else{
return tmp*tmp;
}
}
}