题意:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
public class Solution {
public double Power(double base, int exponent) {
double res = 1;
for(int i=1;i<=Math.abs(exponent);i++){
res *= base;
}
if(exponent < 0)
return 1 / res;
else
return res;
}
}
有一点很重要:整数包括正数、负数和零!
还有一点:指数函数的底数不能为0;
另外一种好方法,就是通过计算exponent一半时候的结果
public class Solution {
public double Power(double base, int exponent) {
double res = 1;
if(exponent == 0)
return 1;
if(exponent == 1)
return base;
int exp = (exponent > 0) ? exponent : (-exponent);
double temp = Power(base,exp/2);
if((exponent & 1) == 0)
res = temp * temp;
else if((exponent & 1) == 1){
res = temp * temp * base;
}
return (exponent > 0) ? (res) : (1/res);
}
}
在这里有这么几点需要注意:
(1)判断一个数是正负数这种类似的情况,不要使用if和else if了,使用三目运算符比较简单。
(2)一个数除以2 的这样情况,不要使用 value/2的形式了,使用value >> 1比较合适
(3)判断一个数是奇数还是偶数,不要使用除二取余判断了,还是使用 (value & 1) == 1 的结果来判断!!!
参考:https://blog.csdn.net/jsqfengbao/article/details/47164537