题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解题思路
可用快速幂,不过需要注意指数为负数时是求倒数,此时底数不能为0
Code
class Solution {
public:
double getPower(double base, int exponent) {
double tem = base, result = 1.0;
while(exponent) {
if(exponent & 1) result *= tem;
tem *= tem;
exponent = exponent >> 1;
}
return result;
}
double Power(double base, int exponent) {
if(exponent < 0) {
if(base == 0) {
//throw new RuntimeException("分母不能为0");
}
return 1.0 / getPower(base, -exponent);
}
return getPower(base, exponent);
}
};
- java
public class Solution {
public double Power(double base, int exponent) {
if(base == 0 && exponent < 0) {
throw new RuntimeException("分母不能为0");
}
return exponent < 0 ? 1.0/Math.pow(base, -exponent) : Math.pow(base, exponent);
}
}