此博文由于笔者的疏忽,内容分析有问题,在此感谢评论区:WINorYU、熙·溯、ZStaoerA等大佬的指出,代码分析中,应该是先+1再乘2,本着记录错误的目的,问题代码就不做删除了,希望各位看此博文的同学以笔者为戒

在此为看过这篇博文的同学道个歉,笔者不严谨导致误导了各位同学,以后笔者的博文在发布前,一定反复查验!!!

偶然看到一个算法问题——猴子吃桃

题目如下:

.   猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第十天早上在想吃时,就只剩一个桃子了.求第一天共摘了多少个桃子?

分析:

设一共有n个桃子,每过一天猴子吃 n/2-1 个桃子,在第十天的时候,n = 1

根据递推公式 当第十天n=1时,那么第九天为:1*2+1 = 3,第八天为:3*2+1 = 7 ... 第一天为:n*2+1

由上诉条件分析我们可以得出程序:

// 问题代码
public static int monkey(int day){// 当天数为第十天时,还剩一个桃子if (day == 10){return 1;}// 否则根据公式递推 应该是先+1再乘2 此处代码问题未做修复 return monkey(day+1)*2+1;}// 修复代码public static int monkey(int day){// 当天数为第十天时,还剩一个桃子if (day == 10){return 1;}return (monkey(day+1)+1)*2;}

返回结果:

通过传入天数1可以得出 第一天猴子共摘了1023个桃子

由于不确定返回的结果是否正确,笔者写了一个验证程序

    // 定义全局变量 记录天数  问题代码private static int day = 0;public static int mk(int total){System.out.println("第"+(++day)+"天,桃子数量为:"+total);// 当桃子为1时,返回的天数是第10天if (total== 1){return 10;}// 猴子一天会吃前一天剩下桃子总数的一半多一个return mk(total/2)-1;}// 修复代码public static int mk(int total){System.out.println("第"+(++day)+"天,桃子数量为:"+total);// 当桃子为1时,返回的天数是第10天if (total == 1){return 10;}// 猴子一天会吃前一天剩下桃子总数的一半多一个return mk((total/2)-1);}

返回结果如下:

                {\__/}                                          {\__/}( ·-·)                                          (·-· )/ >------------------------------------------------< \|      ☆                            ||         ☆                         ||  ★                                ||         ☆                         ||      ☆                            ||                                   |-------------------------------------

Java递归算法——猴子吃桃相关推荐

  1. java【猴子吃桃问题】

    文章目录 一.猴子吃桃问题? 1.问题描述 2.输入格式 3.输出格式 4.样例输入 5.样例输出 二.我的思路 三.java源程序代码 一.猴子吃桃问题? 1.问题描述 猴子吃桃问题.猴子第一天摘下 ...

  2. 编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略

    编程笔试(解析及代码实现):国内各大银行(招商银行/浦发银行等)在线笔试常见题目(猴子吃桃/字符串逆序输出/一段话输出字的个数/单词大小转换等)及其代码实现(Java/Python/C#等)之详细攻略 ...

  3. 编程笔试(解析及代码实现):猴子吃桃。猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个…的C++、Java、Python、C#等语言代码实现

    编程笔试(解析及代码实现):猴子吃桃.猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个. 第二天早上又将剩下的桃子吃了一半,还是不过瘾,又多吃了一个.以后每天都吃前一天剩下的一半再加一个 ...

  4. 猴子吃桃问题【Java】

    题目描述: 猴子吃桃问题.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个. 第二天早上又将剩下的桃子吃掉一半,又多吃一个.以后每天早上都吃了前一天剩下的一半零一个. 到第N天早上想再吃 ...

  5. 猴子吃桃问题——递归算法解答

     猴子吃桃问题.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天又将剩下的桃子吃掉了一半,又多吃了一个.以后每天将前一天剩下的桃子吃掉一半,再多吃一个.直到第十天只剩下一个桃 ...

  6. 递推和递归的方法解决猴子吃桃问题(10天延伸到N天)——Java

    目录 问题重述 递推法 问题分析 递推代码部分 运行结果: 递归法 问题分析 递归代码部分 运行结果: 问题重述 猴子吃桃问题. 猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个: 第二 ...

  7. Java实现:猴子吃桃问题

    Java实现:猴子吃桃问题 文章目录 Java实现:猴子吃桃问题 1. 问题 2. 解决方案 3. 实现代码 4. 执行结果 5. 解决方法说明--穷举法 1. 问题 猴子吃桃问题:有一只猴子第一天摘 ...

  8. Java语言描述 猴子吃桃问题(递归和循环写法)

    //题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个//第二天早上又将剩下的桃子吃掉一半,又多吃了一个//以后每天早上都吃了前一天剩下 的一半零一个.到第10天早上想再 ...

  9. java - 猴子吃桃

    著名的猴子吃桃问题,计算摘桃子的个数. 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下 的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下 的一 ...

最新文章

  1. jetty9 web app的部署
  2. python作者 es6_ES6 全套教程 ECMAScript6 (原著:阮一峰)(1)
  3. 创建型模式 工厂模式
  4. python socket epoll_python 关于epoll的学习
  5. 最新的Windows phone Developer tools RTW 发布了
  6. Java数组在内存中的分配
  7. Vercel反向代理做CDN,免费给网站加速隐藏源站,可绑定域名
  8. linux下使用select实现精确定时器
  9. 如何让网站在百度有LOGO展示
  10. 机器学习-学习笔记3.1-局部加权回归
  11. readelf 显示文件完整段表
  12. ShadowGun Billboard Blinking God Rays
  13. leapftp,leapftp怎么上传文件
  14. 《实况足球10》全套数值能力解析
  15. 生物特征识别性能的不同衡量标准以及python源代码
  16. Chrome 火焰图
  17. 卖电子产品怎么引流?电子产品怎么线上引流?
  18. 替换加密(恺撒加密法)
  19. 【企业邮箱申请】网易企业邮箱陌生人来信安全提醒功能
  20. Python 安装PyQt5失败:Permission denied:d3dcompiler_47.dll

热门文章

  1. 原神剧情自动对话增强版
  2. WebGL 这个三角形,像极了我的前半生!
  3. WordPress Auto Post 3.7 无限制版本
  4. Linux小技巧之三:Terminal的使用方法
  5. 一起学python——红绿灯程序设计(1--4)代码
  6. 华为OD机试 - 整理扑克牌(Java JS Python)
  7. 【英语:基础高阶_经典外刊阅读】L2.阅读理解必备技能—词义推测
  8. HLS播放:html5下用video标签来播放m3u8格式的视频
  9. 计算机三级网络技术笔记(大题)
  10. clickhouse连接问题解决:Code: 210. DB::NetException: I/O error: Broken pipe, while writing to socket