买酒
题目:每瓶啤酒2元,2个空瓶可以兑换一瓶啤酒,4个瓶盖可以兑换一瓶啤酒,问10元钱最多喝多少瓶啤酒?
package com.click369; public class Test { // 最开始可以买5瓶啤酒 public static int all = 5; // 记录剩下的酒瓶数 public static int leftBottle; // 记录剩下的瓶盖数 public static int leftTop; public static void main(String[] args) { all = all + drink(5, 5); System.out.println("总共能喝:" + all); System.out.println("剩下酒瓶个数:" + leftBottle); System.out.println("剩下盖子个数:" + leftTop); } /** * 计算可以兑换多少瓶啤酒 * * @param bottle * 现有的酒瓶数 * @param top * 现有的瓶盖数 * @return 可兑换的啤酒个数 */ public static int drink(int bottle, int top) { // 当酒瓶数超过2或者瓶盖数超过4就可以继续兑换啤酒 if (bottle >= 2 || top >= 4) { leftBottle = (bottle / 2) + (bottle % 2) + (top / 4); leftTop = (top / 4) + (top % 4) + (bottle / 2); return (bottle / 2) + (top / 4) + drink(leftBottle, leftTop); } return 0; } }
运行结果:
总共能喝:15 剩下酒瓶个数:1 剩下盖子个数:3