递归经典案例《买啤酒问题》
题目:啤酒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瓶
递归经典案例《买啤酒问题》相关推荐
- 87-Java方法递归形式、算法流程总结、递归常见案例、递归经典案例-猴子吃桃问题、非规律化递归案例-文件搜索、啤酒问题
方法递归 一.递归的形式和特点 1.什么是方法递归? 方法直接调用自己或者间接调用自己的形式称为方法递归(recursion). 递归作为一种算法在程序设计语言中广泛应用. 2.递归的形式 直接递归: ...
- 汉诺塔python创新设计_递归经典案例汉诺塔 python实现
最近在廖雪峰大神的教程学习python 学到递归的时候有个汉诺塔的练习,汉诺塔应该是学习计算机递归算法的经典入门案例了,因此本人以为能够写篇博客来表达一下本身的看法.这markdown编辑器还不怎么会 ...
- python经典案例-Python递归的经典案例
目录 : 一.递归的简介 二.递归的经典应用 2.1 递归求阶乘 2.2 递归推斐波那契数列 2.3 二分法找有序列表指定值 2.4 递归解汉诺塔 前言: 当我们碰到诸如需要求阶乘或斐波那契数列的问题 ...
- 【原创】10元买啤酒2个空瓶换一瓶4个瓶盖换一瓶经典算法
转载请注明出处:http://blog.csdn.net/li396864285/article/details/51519786 [原创]10元买啤酒2个空瓶换一瓶4个瓶盖换一瓶,经典算法原题目:1 ...
- C语言88案例,经典案例带你绝对入门C编程!
链接可以下载完整代码和文档[C语言88案例] C语言经典88案例打包下载地址 链接: www.keketec.club/posts/c065dba1/ 案例ex01: 将字符串转换为一个整数 1 题目 ...
- ML之UL:无监督学习Unsupervised Learning的概念、应用、经典案例之详细攻略
ML之UL:无监督学习Unsupervised Learning的概念.应用.经典案例之详细攻略 目录 无监督学习Unsupervised Learning的概念 无监督学习Unsupervised ...
- ML之DT之CART:分类与回归树CART算法的简介、应用、经典案例之详细攻略
ML之DT之CART:分类与回归树CART算法的简介.应用.经典案例之详细攻略 目录 分类与回归树CART算法简介 1.CART原理-比较ID3.C4.5 2.CART算法描述 CART算法的案经典案 ...
- c语言两种排序方法的组合,排列和组合算法的实现方法_C语言经典案例
排列和组合算法是考查递归的常见算法,这两种算法能用递归简洁地实现. 本人在经过多次摸索和思考之后,总结如下,以供参考. 程序代码如下: #include #include char array[] = ...
- 关于Visual C#.NET数据库开发经典案例解析(附光盘两张)(珍藏版)—的读后感...
关于Visual C#.NET数据库开发经典案例解析(附光盘两张)(珍藏版)- 评论 读后感:里面的内容很经典,很实用 读后感:给初学者是好,但是是比较旧的了!VS2003 C/S的 读后感:< ...
最新文章
- 【PHPWord】页面Section
- Lazy loading
- activity切换效果
- Kruskal算法的C语言程序
- jsp:include和%@include%的区别
- platform(win32) 错误
- Struts2之文件上传
- setheading指令_set命令
- 今日狗粮继续管饱:因为爱情,才有思科!
- 【转】惹恼程序员的十件事
- Gamvas Web 0.8.4 发布,JavaScript 游戏引擎
- BiomaRt 将小鼠的ENTREZID转化为人类的ENTREZID(同源ENTREZID转换)
- 第四篇Scrum冲刺博客
- 什么是PLC可编程控制器,理论基础知识讲解QY-KC801
- 【Matlab学习手记】Matlab积分问题
- java获取网页编码_java根据URL获取网页编码
- alpha-beta剪枝五子棋c语言,五子棋AI算法第三篇-Alpha Beta剪枝
- 香农-范诺编码(Shannon–Fano Coding)
- WebAPI中 request.query、request.body
- RFID 动态Q静态Q是什么意思
热门文章
- 点击展开按钮设计_使您的按钮设计可点击
- NLP和计算机视觉在AI教育的那些年,数据桎梏一直是难点
- URL跳转漏洞详解与实战
- CrtmpServer不支持FFMpeg截图以及个别客户端推流(如XSplit)的解决办法
- Python网络爬虫实践(2):爬取小说网站小说
- 莫拉蒂接过法切蒂接力棒
- Java 2 实用教程(第五版)课后习题-【编程题答案】
- 2022了 为啥 php 还有这么多人在用?
- 第八周拓展实践4 年龄几何
- 滑动窗口:给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。