题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
源代码:
解法一:
public class Solution {
public double Power(double base, int exponent) {
double res=1;
if(exponent>0){
for(int i=0;i<exponent;i++){
res=res*base;
}
}else{
for(int i=0;i<(0-exponent);i++){
res=res*base;
}
res=1/res;
}
return res;
}
}
解法二://需要注意的地方,如果指数<0,如果指数小于0的同时,基数等于0,不能存在这种情况;指数大于0,然后需要注意指数的求法,很巧妙的一种方法,
public class Solution {
public double Power(double base, int exponent) {
double res=1,cur=base;
int n=0;
if(exponent>0){
n=exponent;
}else if(exponent<0){//exponent<=0
if(base<=0)
throw new RuntimeException("分母不能为0");
n=-exponent;
}
while(n!=0){
if((n&1)==1){
res=res*cur;
}
cur=cur*cur;
n=n>>>1;
}
return exponent>=0?res:1/res;
}
}