题目
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
分析:
基本思路 + 边界考察
(1),e = 0; 返回1.0;
(2),e < 0; base 变为1/base; e变为(-1)*e
(3),累乘即可。
代码实现:
public class Solution {
public double Power(double base, int exponent) {
double res = 1.0;
if(exponent == 0){
return res;
}
if(exponent < 0){
base = 1.0/base;
exponent *= (-1);
}
for(int i = 0; i < exponent; i++){
res *= base;
}
return res;
}
}
注: 此题还有其余解法:
使用递归,时间复杂度O(logn)
当n为偶数,a^n =(a^n/2)*(a^n/2)
当n为奇数,a^n = a^[(n-1)/2] * a^[(n-1)/2] * a