今天看到别人写的一个关于递归能够解决的喝酒问题,也是算是回顾一下之前学习递归逻辑的一些知识吧
如题,啤酒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);
}
}
经过测试了些心算能出来的,好像没啥问题。。。