感觉比较麻烦,想着想着就容易思绪打结,容易懵。。

这道题是要求两个数相除的结果是什么,但是不能用乘法,除法,mod

那我们思考一下结果的含义是什么,声明一个变量res来代表结果,res就是被除数里包含的除数的个数。这里假设被除数num1,除数为num2。

假设num1=20,num2=3。1个num2=3, 2个num2=6,  4个num3=12,   8个num3=24,我们可以知道4<res<8,  最初的时候res为1,每次num2左移一位,res也跟着左移一位,因为num2变为原来的两倍,那么个数也要是原来的两倍才能达成。直到num2*2 > num1,说明此时的num2已经比num1的一半要大了,就不能在翻倍的扩大。这个时候num1减去res个num2剩下的值再拿来和最初的num2做递归,得到的个数加上res就是结果。这道题确实不是很好理解,说也有点说不清楚的感觉。。。

递归部分的代码如下:

29.两数相除

 

然后这道题还有考虑边界的问题,是否达到了最大值或者最下值,这个也有点麻烦,代码如下:

29.两数相除

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-24
  • 2021-10-13
  • 2022-12-23
  • 2022-12-23
  • 2021-08-21
猜你喜欢
  • 2021-07-24
  • 2021-11-22
  • 2021-10-23
  • 2021-11-22
  • 2021-10-11
  • 2022-12-23
相关资源
相似解决方案