package test;
import java.util.Arrays;
import java.util.Scanner;
public class Test{
static Scanner sc = new Scanner(System.in);
static String line;
static double mpower1(double d, int n){
if(n==0){
return 1;
}else if(n>0){
return d*mpower1(d,n-1);//递归计算
}else{
return 1/mpower1(d,-n);
}
}
/**
* 按照n/2来分解,更高效
* @param d
* @param n
* @return
*/
static double mpower2(double d, int n){
if(n==0){
return 1;
}else if(n==1){
return d;
}else if(n>0){
if((n&0x1) == 1){
double result = mpower2(d,n>>1);
return result * result * d;
}else{
double result = mpower2(d,n>>1);
return result * result;
}
}else{
return 1/mpower2(d,-n);
}
}
public static void main(String[] args) {
System.out.println(mpower1(11.1, 2));
System.out.println(mpower2(11.1, 2));
}
}
power(double d,int n)函数实现
最新推荐文章于 2022-04-01 17:18:28 发布