问题
题目:[数的整数次方]
思路
我用的是一般的思路,只不过这个题目考察的情形比较多。
对于底数而言,有底数为0和底数不为0两种情形。
对于指数而言,有指数为0,指数大于0和指数小于0三种情形,均需要考虑。
代码
class Solution {
public:
double Power(double base, int exponent) {
if( !equal( base, 0.0 ) ){ //底数不为0
if(!exponent) return 1.0; // 指数为0
int exp = abs(exponent);
double ret = 1.0;
for(int i = 1; i <= exp; ++i){
ret *= base;
}
if(exponent >0) return ret; // 指数>0
else return 1.0/ret; // 指数小于0
}
else{// 底数为0
if(exponent > 0) return 0.0;
else if( !exponent ) return 1.0;
else return -1.0; // 报错
}
}
private:
bool equal(double a, double b){
static const double eps = 1e-8;
return fabs(a-b) < eps;
}
};