题目:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不考虑大数问题。
思路:本题的关键在于要考虑全面,包括所有情况:base为正、负或0,exponent为正、负或0
class Solution {
public:
double Power(double base, int exponent) {
double result = 1.0;
if(base==0 && exponent == 0){
result = 1.0;
}
else{
int fuexponent = abs(exponent);
for(int i=1;i<=fuexponent;i++){
result = result * base;
}
if(exponent>0)
result = result;
if(exponent<0)
result = 1.0/result;
}
return result;
}
};
思路2:可以用如下公式求a的n次方:
代码:
class Solution {
public:
double Power(double base, int exponent) {
if(exponent == 0)
return 1;
if(exponent == 1)
return base;
double result = Power(base,exponent>>1);
result *= result;
if(exponent & 0x1 == 1)
result *= base;
return result;
}
};
运行结果有问题,超出了限制内存