Skip to content

Latest commit

 

History

History
88 lines (79 loc) · 1.78 KB

File metadata and controls

88 lines (79 loc) · 1.78 KB

数值的整数次方

题目:

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。


我的代码

public class Solution {
    public double Power(double base, int exponent) {
        double i=1.0;
        if(exponent>0){
            for(int j=0;j<exponent;j++){
            	i=i*base;
        	} 
        }
        if(exponent<0){
            i=1/base;
            for(int j=1;j<-exponent;j++)
                i=i*(1/base);
        }
        return i;
  }
}

思路分析

功能测试,边界条件,负面测试以确保代码的完整性 错误处理方法:

  1. 用返回值来告知是否出错;
  2. 设置一个全局变量;
  3. 异常;
public class Solution {
    public double Power(double base, int exponent) {
        //判断有可能出错的试例
        if(base==0.0&&exponent<0){
            return 0.0;
        }
        if(exponent==0){
            return 1.0;
        }
        double answer=1.0;
        if(exponent>0){
            for(int i=0;i<exponent;i++){
                answer*=base;
            }
        }
        if(exponent<0){
            for(int i=0;i<-exponent;i++){
                
                answer*=(1/base);
            }
        }
        return answer;
  }
}
public class Solution {
    public double Power(double base, int exponent) {
        int mul=0;
        if(exponent==0){
            return 1;
        }
        if(exponent<0){
            mul=-exponent;
        }
        if(exponent>0){
            mul=exponent;
        }
        double answer=1.0;
        while(mul!=0){
            if((mul&1)==1){
                answer*=base;
            }
            base*=base;
            mul>>=1;
        }
        return exponent>0?answer:(1/answer);
  }
}