给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
牛客网AC代码:
注意0和负数的处理即可。
class Solution {
public:
double fun(double base,int exponent){
double result = 1;
for(int i=0;i<exponent;i++)
result *= base;
return result;
}
double Power(double base, int exponent) {
if(exponent == 0)
return 1;
double result = fun(base,abs(exponent));//要加绝对值
if(exponent < 0)
result = 1.0/result;
return result;
}
};
高效的解法:
class Solution {
public:
double fun(double base,int exponent){
if(exponent == 0)
return 1;
else if(exponent == 1)
return base;
double result = fun(base,exponent>>1);
result *= result;
if(exponent & 1)
result *= base;
return result;
}
double Power(double base, int exponent) {
if(exponent == 0)
return 1;
double result = fun(base,abs(exponent));//要加绝对值
if(exponent < 0)
result = 1.0/result;
return result;
}
};