题目:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
答案:
解法一:
直接使用库函数Math.pow(),代码如下:
public class Solution {
public double Power(double base, int exponent) {
return Math.pow(base,exponent);
}
}
解法二:
使用循环,一个一个乘,要注意:判断指数是否为负;注意指数溢出;代码如下:
public class Solution {
public double Power(double base, int exponent) {
if(exponent==0){
return 1;
}
boolean flag = (exponent>0);
long exp = (long)Math.abs((long)exponent);
double result = 1;
for(long i=0;i<exp;i++){
result = result*base;
}
if(!flag){
result = 1/result;
}
return result;
}
}
解法三:
二分法,代码如下:
public class Solution {
public double Power(double base, int exponent) {
if(exponent==0){
return 1;
}
boolean flag = (exponent>0);
long exp = (long)Math.abs((long)exponent);
double result = 1;
double cur = base;
for(long i=exp;i>0;i=i/2){
if(i%2==1){
result = result*cur;
}
cur = cur*cur;
}
if(!flag){
result = 1/result;
}
return result;
}
}