class Solution {
public int divide(int a, int b) {
if(a==Integer.MIN_VALUE&&b==-1){
return Integer.MAX_VALUE;
}
//全部转化为负数进行判断
//设置标志,判断结果正、负
int flag=0;
if(a>0){
a=-a;
flag+=1;
}
if(b>0){
b=-b;
flag+=1;
}
//flag==1,表示a、b符号相反,结果为负
int res;
res = cal(a,b);
return flag==1?-res:res;
}
private int cal(int a, int b) {
int count =1;
int d =b;
int res=0;
if(a>b){
return res;
}else{
while(!(a-b>b)){
b+=b;
count+=count;
}
return count+ cal(a-b,d);
}
}
}
1、边界
在JDK中,整型类型是有范围的 -2147483648~2147483647 ( -2^31 --- 2^31-1)
最大值为Integer.MAX_VALUE,即2147483647,最小值为Integer.MIN_VALUE,即-2147483648
Integer.MAX_VALUE + 1 = Integer.MIN_VALUE
Math.abs(Integer.MIN_VALUE) = Integer.MIN_VALUE
2、函数自调用-递归调用
注意一个递归调用的出口或者停止位
- 边界条件
- 递归前进段
- 递归返回段