题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
分析
我看到这题就感觉不是挺简单嘛,弄个循环,乘exponent次base不就行了,然后运行,说我错了,我再想了想,int不一定是正数,还可以是负数,于是就要分情况了。exponent大于0,就直接正常算,exponent小于0,就是1/结果。exponent等于0,就会返回1.0,注意需要最后返回double类型。
代码如下:
public class Solution {
public double Power(double base, int exponent) {
double result = 1.0;
if(exponent < 0){
exponent = Math.abs(exponent);
for(int i = 1;i <= exponent;i++)
result = result*base;
result = 1/result;
}else if(exponent > 0){
for(int i = 1;i <= exponent;i++)
result = result*base;
}else{
result = 1.0;
}
return result;
}
}
上面是我最开始运行成功的代码,很好理解,但是这里代码复用了,于是想着可以小小优化一下,再想想你会发现,就小于0,需要单独考虑,即用1/result,大于等于0都是直接循环就行。于是改进代码如下:
public class Solution {
public double Power(double base, int exponent) {
double result = 1.0;
int Exponent = Math.abs(exponent);
for(int i=0;i<Exponent; i++){
result *= base;
}
if(exponent < 0){
result = 1.0/result;
}
return result;
}
}