题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路:
好吧我承认有点飘了,大晚上刷题脑子不够用了,上来直接潜意识以为exponent都是大于0的数,啥也不处理一个for循环就提交了。。。
然后一个Power(2,-3)就把这段代码干掉了。。。
经大佬提示指数为负数,等于乘它的相反数,数学基础了,我居然没想到orz
那就分情况讨论:
public double Power(double base, int exponent) {
double res = 1;
if(exponent == 0){ //指数为0,结果为1
return 1.0;
}
if(exponent < 0){ //指数n为负数,等于-n个base相乘
exponent = 0 - exponent;
base = 1.0/base;
}
for(int i=0;i<exponent;i++){ //已经全部转化为指数为正数情况
res = res * base;
}
return res;
}
牛客网运行:
其他解法可参考: