29.两数相除

可紊 提交于 2020-02-07 05:31:15

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

这道题是要求两个数相除的结果是什么,但是不能用乘法,除法,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就是结果。这道题确实不是很好理解,说也有点说不清楚的感觉。。。

递归部分的代码如下:

 

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!