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瓶
public class Test {
public static void main(String[] arg){
//现有20瓶汽水(用waters表示),也就是说有20个bottles,有20个lids
int waters=20;
int bottles=20;
int lids=20;
//换水:
waters+=changeWater(bottles,lids);
System.out.println("一共可以喝"+waters+"瓶水");
}
public static int changeWater(int bottles,int lids){
//2个瓶子换一瓶水,3个瓶盖换一瓶水,那么可以换得的waters数量是:
int waters=bottles/2+lids/3;
//换了之后,瓶子数量:
bottles=waters+bottles%2;
//盖子数量:
lids=waters+lids%3;
//再次换水:
if(bottles>=2||lids>=3){
waters+=changeWater(bottles,lids);
}
return waters;
}
}
运行结果:一共可以喝113瓶水
正常的是27瓶水,多1瓶水。如果可以借瓶那就是无限循环想喝多少都可以。没有固定的多少瓶。
一共100多瓶行不,递归算法,不解释
我算一共72瓶