题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路
/*
* 思路:注意分指数是正数/灵/负数的情况
*
*/
class Solution {
public:
double Power(double base, int exponent) {
if(exponent == 0) return 1.0;
double result = 1.0;
if(exponent > 0){
while(exponent--){
result = result * base;
}
}else{
exponent = -exponent;
while(exponent--){
if(base == 0) return -1;
result = result/base;
}
}
return result;
}
};
思路
/*
* 思路二:注意分指数是正数/灵/负数的情况
* 通过2的倍数来减少乘法的次数:举例:10^1101 = 10^0001*10^0100*10^1000。
*/
class Solution {
public:
double Power(double base, int exponent) {
if(exponent == 0) return 1.0;
double result = 1.0;
int n;
if(exponent > 0){
n = exponent;
}else{
n = -exponent;
}
while(n != 0){
result *= result;
if((n & 1) != 0){
result *= base;
}
n >>= 1;
}
return exponent>0 ? result : (1/result);
}
};