题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
微微一想可能就能用一个循环从1到exponent累乘得到结果,but从数学角度其实有更简单的方法。
例如:10^7 = 10^1 * 10^2 * 10^4
等同于
10^111 = 10^001 * 10^010 * 10^100
基于此我们可以将指数进行分解….
public static double power(double base, int exponent) {
double res = 1;
int n = Math.abs(exponent);
while (n != 0) {
if ((n & 1) != 0) {
res *= base;
}
base *= base;
n >>= 1;
}
return exponent < 0 ? 1 / res : res;
}