题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
解题思路:
判断exponent是否大于0,大于零,直接计算base的exponent;
小于零,则先计算base的exponent,然后再用1除。
当然,也可以直接调用库函数,一行代码即可搞定:
return pow(base,exponent);//只要你敢写给面试官。
下面为一般写法:
class Solution {
public:
double Power(double base, int exponent) {
double result = 1.0;
if(base == 1 || exponent == 0){
return result;
}
if(exponent > 0){
for(int i = 1;i <= exponent;i++){
result *= base;
}
}else{
for(int i = 1;i <= -exponent;i++){
result *=base;
}
result = 1.0/result;
}
return result;
}
};
快速幂方法:
class Solution {
public:
double Power(double base, int exponent) {
double result = 1.0;
int t = exponent;
while(exponent){
if(exponent&1){
result *=base;
}
base *= base;
exponent /= 2;
}
return t > 0 ? result : 1.0/result;
}
};