实现
1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以和多少汽水?
分析
- 将20元全部花去买20瓶水——20
- 20个空瓶可以换10瓶水——20/2
- 10个空瓶可以换5瓶水——10/2
- 5个空瓶可以换两瓶水但会剩下一个空瓶——5%2=1
- 3个空瓶可以换1瓶水并剩下一个空瓶——3%2=1
- 2个空瓶可以换1瓶水——2/2
当只剩下0个或1个空瓶时,程序变不再继续
可以用到递归的思想:
输出时现将买到和花去钱的数量一致的汽水+每次递归空瓶换到水的个数
代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int Drink(int bottle)
{
if (bottle > 1)
{
int a = bottle / 2;//得到水的个数
int b = bottle % 2;//得到空瓶的数量
return a + Drink(a+b);
}
else {
return 0;
}
}
int main()
{
int money = 0;
scanf("%d", &money);//输入有多少钱
int ret = Drink(money);//函数
printf("%d", money + ret);
return 0;
}