递归实现喝汽水问题(C语言)
1.题目及分析
一元钱可以买一瓶汽水,两个空瓶可以换一瓶汽水,给任意钱,可以和多少瓶汽水。
分析:
开始时,可以买到和钱数一样的汽水,自然也会产生同等数量的空瓶,而接下来每一次再喝到汽水都是依靠这些空瓶,所以我们可以将每次的空瓶进行递归,条件就是当只剩0个或1个空瓶时,就不能再喝到汽水了。
2.代码实现
int Drink(int empty)
{
if (empty > 1)
{
int a = empty / 2;
int b = empty % 2;
return a + Drink(a + b);
}
else
{
return 0;
}
}
int main()
{
int i = 0;
int money = 0;
scanf("%d", &money);
int ret = Drink(money);
printf("%d\n", money + ret);
return 0;
}