注意考虑边界的类型题目
作者:
YOLO哈哈哈 | 来源:发表于
2019-01-17 06:45 被阅读0次
注意考虑边界的类型题目
1· 数值的整数次方 (16 剑指offer )
- 需要考虑 power 的 正负
- 需要考虑 base 是 0 ? 正数? 负数?
- 是否超过 Double.MAX_VALUE, Double.MIN_VALUE
- 考虑顺序:
- 检查power 的正负
- 特殊情况 :当power 为 负数时,base 是 0 的 特殊边界情况, 扔exception
- 然后 开始用递归调用, 即使进行了 >> 操作,回到上一层以后依然对 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;
}
本文标题:注意考虑边界的类型题目
本文链接:https://www.haomeiwen.com/subject/vsrbdqtx.html
网友评论