题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
/**
* a^n ={a^(n/2) * a^(n/2),n为偶数;a^(n/2) * a^(n/2) * a}
*
* @param base
* @param exponent
* @return
*/
public double Power(double base, int exponent) {
if (exponent == 0) {
return 1;
}
double res = power(base, Math.abs(exponent));
return exponent < 0 ? 1.0 / res : res;
}
public double power(double base, int exponent) {
if (exponent == 0) {
return 1;
}
if (exponent == 1) {
return base;
}
double res = power(base, exponent >> 1);
res *= res;
if ((exponent & 1) == 1) {//判断exponent是奇数还是偶数
res *= base;
}
return res;
}