两数相除

思路
- 不能用乘除,那就用加法。加了多少次,次数就是商。
- 用递归和二分法进行加操作,具体见代码
- 数值溢出可用long类型来解决,通过判断long变量的值是否大于int.MaxValue,来决定返回值
代码
public class Solution {
public int Divide(int dividend, int divisor) {
bool isPositive=true;
if(dividend<0&&divisor>0 || dividend>0&&divisor<0){
isPositive=false;
}
long ldividend = Math.Abs((long)dividend);
long ldivisor=Math.Abs((long)divisor);
long result=divide(ldividend,ldivisor);
if(result>int.MaxValue){
return isPositive?int.MaxValue:int.MinValue;
}
return isPositive?(int)result:-(int)result;
}
public long divide(long dividend,long divisor){
if(dividend<divisor) return 0;
long sum=divisor;
long result=1;
while(dividend>sum+sum){
sum +=sum;
result +=result;
}
return result+divide(dividend-sum,divisor);
}
}

相关文章:
-
2022-12-23
-
2022-12-23
-
2022-12-23
-
2021-08-21
-
2021-09-08
-
2021-07-24
-
2021-10-03