package com.dixin.temp;
import org.junit.Test;
/**
* Created by admin on 2017/10/23
*/
public class E {
/**
* 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
*/
public double Power1(double base, int exponent) {
//@1 直接套Math.pow
return Math.pow(base,exponent);
}
public double Power2(double base, int exponent) {
//@2 递归,时间复杂度为O(logn)
if(exponent==0) {
return 1.0;
}
if(exponent==1) {
return base;
}
int n=Math.abs(exponent);
double result=0.0;
result=Power2(base,n>>1);
result*=result;
if((n&1)==1) {//如果是奇数次幂,还应再乘以一次底数
result*=base;
}
if(exponent<0) {//负数次幂结果为次幂分之一
result=1/result;
}
return result;
}
public double Power3(double base, int exponent) {
//@3 累乘,时间复杂度为O(n^2)
int n=Math.abs(exponent);
double result=1.0;
for(int i=0;i<n;i++) {
result*=base;
}
if(exponent>=0) {
return result;
} else {//负数次幂结果为次幂分之一
return 1/result;
}
}
@Test
public void test() {
System.out.print(Power1(-2,-1));
System.out.print(Power2(-2,-2));
System.out.print(Power3(-1,-2));
}
}
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
最新推荐文章于 2019-05-14 10:08:15 发布