数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
public class SecondaryPower {
public static void main(String[] args) {
// TODO Auto-generated method stub
double base = 3;
int exponent = 3;
double result = Power(base, exponent);
System.out.println(result);
}
public static double Power(double base, int exponent) {
if (base == 0.0 && exponent < 0)
return 0.0;
int abs = Math.abs(exponent);// Math.abs(n):对int、long、float、double类型的数取绝对值
// 其中 int 类型的数取值范围是 -2^31——2^31-1(-2147483648 ~ 2147483647)
double result = pow(base, abs);
if (exponent < 0) {
return 1 / result;
} else {
return result;
}
}
public static double pow(double base, int abs) {
if (abs == 0) {
return 1.0;
}
if (base == 1.0) {
return base;
}
double re = pow(base, abs >> 1);
re *= re;
if ((abs & 1) == 1) {
return re * base;
} else {
return re;
}
}
}