给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
public class Solution {
public double Power(double base, int exponent) {
if(exponent == 0) {
return 1;
}
if(exponent > 0){
return PowerPos(base, exponent);
}else{
return 1/PowerPos(base, -1 * exponent);
}
}
public double PowerPos(double base, int exponent){
if(exponent == 0) return 1;
return base * this.PowerPos(base, exponent - 1);
}
}
别人的方法:利用位运算
class Solution {
public:
double Power(double base, int exponent) {
long long p = abs((long long)exponent);
double r = 1.0;
while(p){
if(p & 1) r *= base;
base *= base;
p >>= 1;
}
return exponent < 0 ? 1/ r : r;
}
};