C语言从入门到精通第2版
发表在C语言图书答疑 2015-07-02
是否精华
版块置顶:
我碰到一个问题在6章有个递归分鱼是咋分的?能不能给讲讲,在这感谢,
分享到:
精彩评论 2
学分: LV1
TA的每日心情
开心
2020-06-16 09:16:38
2015-07-02
沙发
读者你好,我们论坛主要还是针对大家对我们图书中不能运行的或有错误的内容进行解答。如果有不懂的知识,建议大家再重新看几遍或再找些基础书学学,或者查查百度,也可以加入qq交流群,有初学者讨论。 VC/C/C++技术交流群:365354473
爱学习
学分:0 LV1
TA的每日心情
开心
2020-03-23 20:54:03
2015-07-02
板凳
这个问题主要是因为不知道第5个人,也就是E拿走了多少鱼,如果最后一个人拿走的比如说是k条鱼,那么最后总共剩余是5k,就是最后这个将这一堆鱼平均分成5份时,没有再多一条鱼,是正好是5的倍数。如果知道了k的值,依次往回递推就能知道最开始的X(一共打多少鱼)是多少条了。

那么关键是这个5k怎么确定,程序中定义了一个静态的i,就是这个i一直存在,值是一直往上加的,它先从0开始向上加,加到5的话,此时5是5的整数倍,这时假定最后一个E的时候总剩余是5条,就返回6,因为E还扔掉一条。那么D的时候总剩余就是应改是 (6*5/4)+1,这个时候发现不是整数,那么就是第一次返回的6不对

又从6开始往上加 ,加到10的时候是5的倍数,于是返回11, (11*5/4)+1仍然不是整数,所以又回到E这次,11继续往上加,加到15,15是5的倍数,返回16, (16*5/4)+1 =21是整数,那么就暂时认定D的时候总剩余是21 ,再用返回的21去计算C的时候总剩余  (21*5/4)+1 发现又不是整数,那么又重新回到E的时候,E上次返回是16 ,此时16继续往下加。。。。。。。。
如此反复,直到能够推出A的时候总鱼数是整数的时候程序才结束
首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照