给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解答:默认0的所有次方都为0(包括0的0次方,和0的负幂次方)
a>>1 表示 a/2
a<<1 表示 a×2
判断奇偶:n%2==1 或 (n&1)==1
public class T_12_Power {
//非递归方式
public double Power(double base, int exponent) {
double result = base;
int n = exponent;
if (exponent == 0) {
return 1;
}
if (exponent < 0) {
exponent = -exponent;
}
for (int i = 2; i <= exponent; i++) {
result *= base;
}
return n < 0 ? 1 / result : result;
}
//递归方式
public double getTheResult(double base, int exponent) {
if (exponent == 0) {
return 1;
} else if (exponent == 1) {
return base;
} else {
double res = getTheResult(base, exponent >> 1);
res *= res;
if ((exponent & 1) == 1) {
return res *= base;
}
return res;
}
}
public double Power2(double base, int exponent) {
boolean isNegetive = false;
if (exponent < 0) {
exponent = -exponent;
isNegetive = true;
}
double result = getTheResult(base, exponent);
if (isNegetive) {
return 1 / result;
} else {
return result;
}
}
}