题目:啤酒2元一瓶,4个酒盖可以兑换1瓶啤酒,2个空瓶可以兑换1瓶酒,请问10元最终可以喝多少瓶酒,剩余多少个空瓶和盖子?

public class Test {// 定义此静态成员变量来存储最终喝的酒的总数量public static int totalNumber;// 定义两个静态成员变量分别记录最后剩下的空瓶数以及盖子数public static int lastBottleNumber;public static int lastCoverNumber;public static void main(String[] args) {// 1、调用方法拿钱买酒buy(10);System.out.println("喝酒总数:" + totalNumber + "瓶");System.out.println("剩下的盖子数:" + lastCoverNumber + "个");System.out.println("剩下的瓶子数:" + lastBottleNumber + "瓶");}public static void buy(int money) {// 2、第一次进来时的钱可以买多少瓶酒以及喝出来的空瓶子及盖子数量int buyNumber = money / 2;// 累加到最终喝的酒总个数totalNumber += buyNumber;// 3、将空瓶和盖子统计到这里,用来“换钱”int coverNumber = lastCoverNumber + buyNumber;int bottleNumber = lastBottleNumber + buyNumber;// 换来的瓶子和盖子都拿来换钱int allMoney = 0;if (coverNumber >= 4) {// 如果达到要求加入该分支换算成钱赋值回去allMoney += (coverNumber / 4) * 2;}// 换完钱也要将剩下的盖子数量换算出来lastCoverNumber = coverNumber % 4;// 4、瓶子同理用来换算if (bottleNumber >= 2) {allMoney += (bottleNumber / 2) * 2;}lastBottleNumber = bottleNumber % 2;// 5、最后如果换到的钱满足重新调用方法用换来的钱再换算,直到不满足结束递归if (allMoney >= 2) {buy(allMoney);}}
}

运行结果:

        喝酒总数:15瓶
        剩下的盖子数:3个
        剩下的瓶子数:1瓶

递归经典案例《买啤酒问题》相关推荐

  1. 87-Java方法递归形式、算法流程总结、递归常见案例、递归经典案例-猴子吃桃问题、非规律化递归案例-文件搜索、啤酒问题

    方法递归 一.递归的形式和特点 1.什么是方法递归? 方法直接调用自己或者间接调用自己的形式称为方法递归(recursion). 递归作为一种算法在程序设计语言中广泛应用. 2.递归的形式 直接递归: ...

  2. 汉诺塔python创新设计_递归经典案例汉诺塔 python实现

    最近在廖雪峰大神的教程学习python 学到递归的时候有个汉诺塔的练习,汉诺塔应该是学习计算机递归算法的经典入门案例了,因此本人以为能够写篇博客来表达一下本身的看法.这markdown编辑器还不怎么会 ...

  3. python经典案例-Python递归的经典案例

    目录 : 一.递归的简介 二.递归的经典应用 2.1 递归求阶乘 2.2 递归推斐波那契数列 2.3 二分法找有序列表指定值 2.4 递归解汉诺塔 前言: 当我们碰到诸如需要求阶乘或斐波那契数列的问题 ...

  4. 【原创】10元买啤酒2个空瓶换一瓶4个瓶盖换一瓶经典算法

    转载请注明出处:http://blog.csdn.net/li396864285/article/details/51519786 [原创]10元买啤酒2个空瓶换一瓶4个瓶盖换一瓶,经典算法原题目:1 ...

  5. C语言88案例,经典案例带你绝对入门C编程!

    链接可以下载完整代码和文档[C语言88案例] C语言经典88案例打包下载地址 链接: www.keketec.club/posts/c065dba1/ 案例ex01: 将字符串转换为一个整数 1 题目 ...

  6. ML之UL:无监督学习Unsupervised Learning的概念、应用、经典案例之详细攻略

    ML之UL:无监督学习Unsupervised Learning的概念.应用.经典案例之详细攻略 目录 无监督学习Unsupervised Learning的概念 无监督学习Unsupervised ...

  7. ML之DT之CART:分类与回归树CART算法的简介、应用、经典案例之详细攻略

    ML之DT之CART:分类与回归树CART算法的简介.应用.经典案例之详细攻略 目录 分类与回归树CART算法简介 1.CART原理-比较ID3.C4.5 2.CART算法描述 CART算法的案经典案 ...

  8. c语言两种排序方法的组合,排列和组合算法的实现方法_C语言经典案例

    排列和组合算法是考查递归的常见算法,这两种算法能用递归简洁地实现. 本人在经过多次摸索和思考之后,总结如下,以供参考. 程序代码如下: #include #include char array[] = ...

  9. 关于Visual C#.NET数据库开发经典案例解析(附光盘两张)(珍藏版)—的读后感...

    关于Visual C#.NET数据库开发经典案例解析(附光盘两张)(珍藏版)- 评论 读后感:里面的内容很经典,很实用 读后感:给初学者是好,但是是比较旧的了!VS2003 C/S的 读后感:< ...

最新文章

  1. 【PHPWord】页面Section
  2. Lazy loading
  3. activity切换效果
  4. Kruskal算法的C语言程序
  5. jsp:include和%@include%的区别
  6. platform(win32) 错误
  7. Struts2之文件上传
  8. setheading指令_set命令
  9. 今日狗粮继续管饱:因为爱情,才有思科!
  10. 【转】惹恼程序员的十件事
  11. Gamvas Web 0.8.4 发布,JavaScript 游戏引擎
  12. BiomaRt 将小鼠的ENTREZID转化为人类的ENTREZID(同源ENTREZID转换)
  13. 第四篇Scrum冲刺博客
  14. 什么是PLC可编程控制器,理论基础知识讲解QY-KC801
  15. 【Matlab学习手记】Matlab积分问题
  16. java获取网页编码_java根据URL获取网页编码
  17. alpha-beta剪枝五子棋c语言,五子棋AI算法第三篇-Alpha Beta剪枝
  18. 香农-范诺编码(Shannon–Fano Coding)
  19. WebAPI中 request.query、request.body
  20. RFID 动态Q静态Q是什么意思

热门文章

  1. 点击展开按钮设计_使您的按钮设计可点击
  2. NLP和计算机视觉在AI教育的那些年,数据桎梏一直是难点
  3. URL跳转漏洞详解与实战
  4. CrtmpServer不支持FFMpeg截图以及个别客户端推流(如XSplit)的解决办法
  5. Python网络爬虫实践(2):爬取小说网站小说
  6. 莫拉蒂接过法切蒂接力棒
  7. Java 2 实用教程(第五版)课后习题-【编程题答案】
  8. 2022了 为啥 php 还有这么多人在用?
  9. 第八周拓展实践4 年龄几何
  10. 滑动窗口:给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。