package jianzhi_offer;
public class value_cifang {
public static void main(String[] args) {
// TODO Auto-generated method stub
double result = Power(2,-3);
System.out.println(result);
}
public static double Power(double base, int exponent) {
//指数为0或者底数为1返回1
if(base == 1 || exponent == 0) {
return 1;
}
//求指数的绝对值,之后对指数为负的情况进行处理
int exp = exponent;
if(exponent < 0) {
exp = -exp;
}
//求幂次方
double result = valuePower(base,exp);
if(exponent < 1) {
result = 1/result;
}
return result;
}
public static double valuePower(double base,int exponent) {
if(base == 1 || exponent == 0) {
return 1;
}
//指数为1返回底数
if(exponent == 1) {
return base;
}
//递归求一半的值
double result = valuePower(base,exponent>>1);
//一半的值已经求出来了再平方,如果是奇数还要乘以一次底数
result*=result;
if(exponent%2!=0) {
result*= base;
}
return result;
}
}
剑指offer_java实现-面试题16.数值的整数次方
最新推荐文章于 2022-03-09 10:19:55 发布