黑马程序员技术交流社区
标题:
递归的问题。具体代码如下,求解释。
[打印本页]
作者:
zhuchangbao
时间:
2015-4-23 09:34
标题:
递归的问题。具体代码如下,求解释。
我做入学题的时候,有如下。
/**
* 第十题:
* 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?
* 假如是50人,又需要买多少瓶可乐?(需写出分析思路)
* @param args
*/
public static void main(String[] args) {
System.out.println(demand(28));
}
public static int demand (int person){
for (int i = 1, sum = 1, temp = 3; ; i *=temp,sum +=i){
if (person <sum){
return person - (sum - i) + i/temp -(person -(sum -i)) /temp;
}
}
}
上边的程序是别人写的,但是我看不懂,求大神给解释一下好么?
作者:
突然世界晴
时间:
2015-4-23 10:01
本帖最后由 突然世界晴 于 2015-4-23 10:31 编辑
public class Test40 {
public static void main(String[] args) {
kele(28);
}
private static void kele(int person) {
//gaizi 是盖子个数 kele是可乐瓶数,buy是要买的数量
int gaizi=0;
int kele=0;
int buy=0;
//如果人数少于3个则买的可乐和盖子就是该人的个数和
if(person<3)
{
System.out.println(person+"个人,需要买"+person+"瓶可乐,还剩"+person+"个盖子");
}else
{
//循环判断可乐增加跟人数相比,一次循环buy则加1,盖子加1,可乐+1
while(kele<person)
{
kele++;
gaizi++;
buy++;
//如果盖子是3个了可乐+1,盖子变成1个
if(gaizi==3)
{
kele++;
gaizi=1;
}
}
}
System.out.println(person+"个人,需要买"+buy+"瓶可乐,还剩"+gaizi+"个盖子");
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2