Java编程那些事儿40—流程掌握综合示例2[Java编程]
本文“Java编程那些事儿40—流程掌握综合示例2[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
5.6.1.3 喝汽水问题
问题:共有1000瓶汽水,每喝完后一瓶得到的一个空瓶子,每3个空瓶子又能换1瓶汽水,喝掉今后又得到一个空瓶子,问总共能喝多少瓶汽水,最后还剩余多少个空瓶子?
这个问题其实是个对比典型的递推问题,每3个空瓶都可以再换1瓶新的汽水,这样一向递推下去,直到最后不能换到汽水为止.
第一种思绪:每次喝一瓶,每有三个空瓶子就去换一瓶新的汽水,直到最后没有汽水可以喝为止.在程序中记忆汽水的数目和空瓶子的数目便可.
则实现的代码以下:
int num = 1000; //汽水数目
int drinkNum = 0; //喝掉的汽水数目
int emptyNum = 0; //空瓶子的数目
while(num > 0){ //有汽水可以喝
num--; //喝掉一瓶
emptyNum++;//空瓶子数目增添1
drinkNum++; //喝掉的汽水数目增添1
if(emptyNum == 3){//有3个空瓶子,则去换
num++; //汽水数目增添1
emptyNum = 0; //空瓶子数目清零
}
}
System.out.println(“总共喝掉瓶数:” + drinkNum);
System.out.println(“剩余空瓶子数:” + emptyNum);
履行该程序,输出后果以下:
总共喝掉瓶数:1499
剩余空瓶子数:2
在该代码中,每次循环喝掉一瓶汽水,则汽水数目削减1,空瓶子数增添1,喝掉的总汽水瓶数增添1,每次判断空瓶子的数目能否到达3,假如到达3则换1瓶汽水,同时空瓶子的数目变成零.这种思绪对比直观,但是循环的次数对比多,所以就有了下面的逻辑实现.
第二种思绪:一次把全部的汽水喝完,得到全部的空瓶子,再全部换成汽水,然后再一次全部喝完,再得到全部的空瓶子,顺次类推,直到没有汽水可喝为止.
则实现的代码以下:
int num = 1000; //汽水数目
int drinkNum = 0; //喝掉的汽水数目
int emptyNum = 0; //空瓶子的数目
while(num > 0){ //有汽水可以喝
drinkNum += num;//喝掉全部的汽水
emptyNum += num; //空瓶子数目等于上次剩余的加上这次喝掉的数目
num = emptyNum / 3;//兑换的汽水数目
emptyNum -= num * 3;//本次兑换剩余的空瓶子数目
}
System.out.println(“总共喝掉瓶数:” + drinkNum);
System.out.println(“剩余空瓶子数:” + emptyNum);
在该代码中,每次喝掉全部的汽水,也就是num瓶,则喝掉的总瓶数每次增添num,因为每次都大概剩余空瓶子(不足3个的),则总的空瓶子数目是上次空瓶子数目加上本次喝掉的num瓶.接着是对话汽水,则每次可以兑换的汽水数目是空瓶子的数目的1/3,注意这里是整数除法,而本次兑换剩余的空瓶子数目是本来的空瓶子数目减去兑换得到汽水数目的3倍,这就是一次循环所完成的功效,顺次类推便可办理该问题.
以上是“Java编程那些事儿40—流程掌握综合示例2[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |