20元可买【20】瓶 得瓶20个→可换【10】 喝完得瓶10→可换【5】 喝完得瓶5→可换【2】余下1,喝完瓶为2+1 →可换【1】余下1,喝完瓶为1+1→可换【1】,喝完余瓶1
再向老板借一空瓶 1+1 可换【1】瓶,再把瓶还给老板 所以可以喝到(20+10+5+2+1+1+1)=40瓶
20元买20瓶,喝完兑换10瓶(30),10瓶喝完兑换5瓶(35),5瓶兑换2瓶(37)剩余一个空瓶,喝2瓶在兑换1瓶(38),喝完加上剩余的1个 可以兑换一瓶(39),1瓶喝完交给对方换一瓶(40),喝完把瓶子给人家(等于先预借一个瓶,喝完空瓶再兑换) 40瓶
用递归的方法
//第一题
public static int sum(int n) {
int s=n;
if(n>1)
s+=sum(n-1);
return s;
}
//第二题
/**
* 计算空瓶瓶和盖盖能换多少瓶的方法。
* @param p 空瓶瓶个数
* @param g 盖盖个数
* @return 兑换的汽水瓶数
*/
public static int Cola(int p,int g) {
int s=p/2+g/3 ;//第一次兑换的瓶数
if(g>=3 || p>=2) {//能够兑换的条件
//一瓶汽水就有一个空瓶和瓶盖,不要忘记兑换剩下的空瓶和盖子
s+=Cola(s+p%2,s+g%3);
}
return s;
}
/**
* 计算能喝汽水的总瓶数的方法
* @param y 买汽水的钱
* @return 能喝汽水的总瓶数
*/
public static int AllCola(int y) {
//买的汽水和兑换的汽水之和为所求
return y+Cola(y, y);
}
37