###问题:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
代码如下:
/*========================解题思路========================*/
//1.base的exponent次方,相当于exponent个base相乘。
/*public class Solution {
public double Power(double base, int exponent) {
double m = base;
if(exponent==0){
return 1;
}
else if(exponent == 1||exponent==-1){
return m;
}
else if(exponent>=2){
for(int i = 2;i<=exponent;i++){
base=base*m;
}
}
else{
for(int i = 2;i<=Math.abs(exponent);i++){
base=1/(base*m);
}
}
return base;
}
}
*/
//第一次错误,没有考虑exponent小于0的情况;
//第二次貌似还是有地方错了,弃用。
/*============================官方答案===============================*/
//累乘。判断特殊情况。base==0;
//取绝对值,累乘。
//如果大于零,直接输出。
//小于零,倒数。输出。
public class Solution {
public double Power(double base, int exponent) {
double result = 1.0;
if(base==0) return 0;
for(int i = 1;i<=Math.abs(exponent);i++){ //不用分正负了。
result*=base; //这样写就不用把exponent==1的情况剔除了。
}
if(exponent>0){
return result;
}
else return 1/result;
}
}