注意考虑边界的类型题目

2019-01-17  本文已影响0人  YOLO哈哈哈

注意考虑边界的类型题目

1· 数值的整数次方 (16 剑指offer )
  1. 检查power 的正负
  2. 特殊情况 :当power 为 负数时,base 是 0 的 特殊边界情况, 扔exception
  3. 然后 开始用递归调用, 即使进行了 >> 操作,回到上一层以后依然对 exponent 没有改变
public double Power(double base, int exponent) throws Exception{
  if(exponent < 0 &&  base  == 0)
      throw new Exception();
  if (base == 0)
      return 1;
  double res = 0;
  if(exponent < 0 )
      res =  powerWithExp( 1/base ,  - exponent );
  else 
      res = powerWithExp(base , exponent );        
   return res;
}

public double powerWithExp(double base , int exponent ) {
    if(exponent == 1)
          return base;
    if (exponent == 0)
        return 1;
    double result = powerWithExp(base , exponent >> 1);
    result *= result;
    if(exponent % 2  == 1)
        result *= base;
    return result;
}
上一篇 下一篇

猜你喜欢

热点阅读