题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
题目分析
//使用库函数pow()
class Solution {
public:
double Power(double base, int exponent) {
double result = pow(base, exponent);
return result;
}
};
不允许使用库函数的话:
class Solution {
public:
double Power(double base, int exponent) {
if(base == 0 && exponent < 0){
return 0;
}
unsigned int absExponent = (unsigned int)(exponent);
if(exponent < 0)
absExponent = (unsigned int)(-exponent);
double result = PowerWithUnsignedExponent(base, absExponent);
if(exponent < 0)
result = 1/result;
return result;
}
double PowerWithUnsignedExponent(double base, unsigned int exponent){
if(exponent == 0)
return 1;
if(exponent == 1)
return base;
double result = PowerWithUnsignedExponent(base, exponent >> 1); //右移 = 除以2
result *= result;
if((exponent & 0x1) == 1) //位与运算符代替求余运算符判断一个数是奇数还是偶数
result *= base;
return result;
}
};