一、问题
啤酒2元一瓶,4个盖子可以换一瓶,2个空瓶可以换一瓶,请问10元可以喝多少瓶?
二、代码
public static int totalNumber; // 总酒数
public static int lastBottleNumber; // 每次剩余的空瓶子数
public static int lastCoverNumber; // 每次剩余的盖子数
public static void main(String[] args) {
buy(10);
System.out.println("总酒数:" + totalNumber);
System.out.println("剩余瓶子数:" + lastBottleNumber);
System.out.println("剩余盖子数:" + lastCoverNumber);
}
public static void buy(int money){
// 1.买啤酒
int buyNumber = money / 2;
totalNumber += buyNumber;
// 2.把盖子和瓶子换算成钱继续买
// 计算本轮总的盖子数和瓶子数
int allBottleNumber = buyNumber + lastBottleNumber;
int allCoverNumber = buyNumber + lastCoverNumber;
int allMoney = 0;
if (allBottleNumber >= 2){
allMoney += (allBottleNumber / 2) * 2;
}
lastBottleNumber = allBottleNumber % 2;
if (allCoverNumber >= 4){
allMoney += (allCoverNumber / 4) * 2;
}
lastCoverNumber = allCoverNumber % 4;
if (allMoney >= 2){
buy(allMoney);
}
}