题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路及解答
/*
思路:
a的b次方的意思就是b个a相乘
*/
public class Solution {
public double Power(double base, int exponent) {
double res = 1.0;
for(int i = 0; i < exponent; i++){
res = res * base;
}
return res;
}
}
这里出现的问题是如果exponent是一个负数上述代码就会出现问题了,这里就是代码的不完整性。
修改代码
/*
思路:
a的b次方的意思就是b个a相乘
这里还要考虑指数为负数的情况以及指数为负数且底数为0的情况
*/
public class Solution {
public double Power(double base, int exponent) {
double res = 1.0;
//如果exponent是一个大于0的整数
if(exponent >= 0){
for(int i = 0; i < exponent; i++){
res = res * base;
}
}else{//如果指数是一个负数的时候,可以先对指数求绝对值,算出次方的结果以后再取倒数,这里求倒数的时候如果底数是0,也会报错
int absoluteExponent = Math.abs(exponent);
double temp = 1.0;
//如果底数是0则返回0
if(base == 0){
return 0;
}else{
for(int i = 0; i < absoluteExponent; i++){
temp = temp * base;
}
res = 1 / temp;
}
}
return res;
}
}