题目
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路
base是否等零:等零:返回0
不等零:根据exponent是否大于0:大等于0,用pow()实现
小于零:传入-exponent,返回倒数。
c++实现
class Solution {
public:
double Power(double base, int exponent) {
double result;
if(base == 0.0){
return 0;
}
if(exponent >= 0){
result = pow(base,exponent);
}
if(exponent < 0){
result = pow(base,-exponent);
result = 1.0/result;
}
return result;
}
}
java实现
/*
* 可以将中间部分再提炼成一个方法,避免其他不必要的开销
*/
public class Solution {
public double Power(double base, int exponent) {
int n = Math.abs(exponent);
double result = 0.0;
if(n == 0) return 1;
if(n == 1) return base;
result = Power(base, n>>1);
result *= result;
if((n&1) == 1){
result *= base;
}
if(exponent < 0){
result = 1/result;
}
return result;
}
}