class Solution {
public:
double Power(double base, int exponent) {
if(base == 0 && exponent == 0)
return 0;
if(base == 0)
return 0;
if(exponent == 0)
return 1;
double num=1.0;
if(exponent>0){
for(int i=1;i<=exponent;i++){
num *= base;
}
return num;
}
if(exponent <0){
int a = (-exponent);
for(int i=1;i<=a;i++){
num *= base;
}
return 1/num;
}
}
};
优质解答:
class Solution {public: double Power(double base, int exponent) { long long p = abs( (long long) exponent); //abs函数负数转换为正数 double r = 1.0; while (p) { //这样一转换就用一个循环代替了我的两个循环,代码简洁啊 if (p & 1) r *= base; base *= base; p >>= 1; //利用存储数为二进制右移来完美解决循环的问题 、、问题这样做和我的整数循环快吗?思考思考 } return ( exponent > 0 ) ? r : 1/r; }};原文:https://www.cnblogs.com/yl1995/p/12933809.html