面试题:数值的整数次方
题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
思路:分为正数负数零
public class Solution { public double Power(double base, int exponent) { //正数、负数、零 double temp=1; if(exponent>0){ for(int i=0;i<exponent;i++){ temp=temp*base; if(temp>1.7976931348623157E308){ System.out.println("已经超出了double类型的取值范围"); return -1; } } return temp; } if(exponent<0){ exponent=-exponent; for(int i=0;i<exponent;i++){ temp=temp*base; if(temp>1.7976931348623157E308){ System.out.println("已经超出了double类型的取值范围"); return -1; } } temp=1.0/temp; return temp; }else{ return 1; } } }
注意一个小细节:这样写会提示没有返回值
public class Solution { public double Power(double base, int exponent) {} double temp=1; if(exponent>0){ ...... return temp; } if(exponent<0){ ...... return temp; } if(exponent==0){ return 1; } } }
应该这样写:
public class Solution { public double Power(double base, int exponent) {} double temp=1; if(exponent>0){ ...... return temp; } if(exponent<0){ ...... return temp; }else{return 1; } } }