//计算: 每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒。10元最多可喝多少瓶啤酒?
double beer = 2;
double money = 10;
Console.WriteLine($"每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒。{money}元最多可喝多少瓶啤酒?");
int beerCount = (int)(money / beer);
int capCount = beerCount;
int bottleCount = beerCount;
Console.Write($"-------------> {money}元购啤酒{beerCount},现存瓶{bottleCount},盖{capCount} ");
Console.WriteLine();
Getbeer(ref capCount, ref bottleCount, ref beerCount);
Console.WriteLine($"\r\n\r\n{money}元,可以喝{beerCount},剩余瓶盖{capCount},剩余空瓶{bottleCount}");
Console.ReadLine();
static void Getbeer(ref int capCount, ref int bottleCount, ref int beerCount)
{
int Newbeer = 0;
if (bottleCount >= 2)
{
Newbeer = bottleCount / 2;
Console.WriteLine($"\r\n空瓶{Newbeer * 2},兑换啤酒{Newbeer}");
beerCount += Newbeer;
bottleCount = bottleCount - Newbeer * 2 + Newbeer;
capCount += Newbeer;
Console.Write($"-------------> 已购啤酒{beerCount},现存瓶{bottleCount},盖{capCount} ");
}
if (capCount >= 4)
{
Newbeer = capCount / 4;
Console.WriteLine($"\r\n瓶盖{Newbeer * 4},兑换啤酒{Newbeer}");
beerCount += Newbeer;
capCount = capCount - Newbeer * 4 + Newbeer;//瓶盖数量
bottleCount += Newbeer;//空瓶数量
Console.Write($"-------------> 已购啤酒{beerCount},现存瓶{bottleCount},盖{capCount} ");
}
if (capCount >= 4 || bottleCount >= 2)
Getbeer(ref capCount, ref bottleCount, ref beerCount);
}