喝酒问题:啤酒2元一瓶 4个瓶盖能换1瓶啤酒,2个空瓶也能换1瓶啤酒

今天看到别人写的一个关于递归能够解决的喝酒问题,也是算是回顾一下之前学习递归逻辑的一些知识吧

如题,啤酒2元一瓶 4个瓶盖能换1瓶啤酒,2个空瓶也能换1瓶啤酒,问:10元钱最多能喝几瓶酒?

public class AlchoDemo  
{  
    // 初始化  
    public static int COUNT = 0;  
  
    private static void recusion(int money, int cap, int bottle)  
    {  
        if (money >= 2)  
        {  
            money = money - 2;  
            COUNT++;  
            cap++;  
            bottle++;  
        }  
        if (cap >= 4) // 每4个瓶盖喝一瓶  
        {  
            cap = cap - 3; // 喝一瓶的时候同时产生一个瓶盖喝空瓶子  
            COUNT++;  
            bottle++;  
        }  
        if (bottle >= 2) // 每2个空瓶喝一瓶  
        {  
            bottle--; // 喝一瓶的时候同时产生一个瓶盖喝空瓶子  
            COUNT++;  
            cap++;  
        }  
        if (money < 2 && cap < 4 && bottle < 2)  
        {  
            return;  
        }  
        recusion(money, cap, bottle);  
    }  
  
    public static void main(String[] args)  
    {  
        recusion(10, 0, 0);  
        System.out.println(COUNT);  
    }  
}  

经过测试了些心算能出来的,好像没啥问题。。。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭