啤酒问题(案例)

75 阅读1分钟
public static int ALL_ALCOHOL;
public static int LastCover;
public static int LastBottle;

public static void main(String[] args) {
        problem(10);
    System.out.println(ALL_ALCOHOL);
    System.out.println(LastCover);
    System.out.println(LastBottle);
}
public static void problem(int money){
    int bay = money / 2;//算出刚开始的钱能买多少酒
    ALL_ALCOHOL += bay; //记录买的所有酒
    int lid = LastCover + bay; //用剩余盖子加上新获得盖子
    int bottle = LastBottle + bay; //用剩余瓶子加上新获得瓶子
    int allMoney = 0; //记录瓶子和盖子可以换到的所有钱
    if(lid >= 4){
        allMoney += (lid / 4) * 2; //4个盖子换2块钱
    }
    LastCover = lid % 4;//求出剩余盖子
    if(bottle >= 2){
        allMoney += (bottle / 2) * 2; //2个瓶子换2块钱
    }
    LastBottle = bottle % 2;//求出剩余瓶子
    if(allMoney >= 2){ //如果所有的钱还可以买酒就继续递归调用该方法
        problem(allMoney);
    }

}

image.png