题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
题目分析
可以简单的使用Java中Math类中的pow方法Math.pow(base,exponent)
就能很简单的得到答案。我们也可以自己实现一下,通过思考可以分为三种情况:
- exponent等于0,此时返回1(base为0时额外考虑等于0)。
- exponent大于0,此时可以使用迭代或者递归实现。
- exponent小于0,此时先通过第二步算出base的正exponent次方,然后取倒数得到结果。
Java实现
- 递归
public double Power(double base, int exponent) {
if(exponent == 0){
return 1;
}else if(exponent > 0){
return positive(base,exponent);
}else{
return negative(base,exponent);
}
}
public double positive(double base, int exponent){
if(exponent > 1){
base = base * positive(base,exponent-1);
}
return base;
}
public double negative(double base, int exponent){
double num = positive(base,-exponent);
return 1 / num;
}
- 迭代
public double Power(double base, int exponent) {
if(exponent == 0){
return 1;
}else if(exponent > 0){
return positive(base,exponent);
}else{
return negative(base,exponent);
}
}
public double positive(double base, int exponent){
double temp = base;
while(exponent-- > 1){
base = base * temp;
}
return base;
}
public double negative(double base, int exponent){
double num = positive(base,-exponent);
return 1 / num;
}