黑马程序员技术交流社区
标题:
可乐问题,不知道这样写可不可以,大神给断断
[打印本页]
作者:
米阳SOHO
时间:
2015-11-29 09:21
标题:
可乐问题,不知道这样写可不可以,大神给断断
/*
* 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,
* 那么要买多少瓶可乐,够28人喝?
* 假如是50人,又需要买多少瓶可乐?(需写出分析思路)
* 人数 1 2 3 4 5 6 7 8 9 10 ……
* 可乐 1 2 3 3 4 5 5 6 7 7……
*
*/
public class Test1 {
public static void main(String[] args) {
int num = bottol(28);
System.out.println("28人需要:" + num);
num = bottol(50);
System.out.println("50人需要:" + num);
}
public static int bottol(int renshu) {
if (renshu == 1) {
return 1;
} else if (renshu == 2) {
return 2;
} else if (renshu == 3) {
return 3;
}
return (renshu % 3 == 1) ? bottol(renshu - 1) : bottol(renshu - 3) + 2;
}
}
这样做测试会给通吗!?求大神解
作者:
米阳SOHO
时间:
2015-11-29 09:24
我想问,这样算不算有思路,就是我先分析出人数和可乐数的关系,然后直接递归算法,有点像兔子问题(斐波那契数列)
作者:
萧未然
时间:
2015-11-29 11:22
我把它封装成对象了
class PeopleDrink{
public static void main(String[] args) {
PeopleDrink p=new PeopleDrink(28);
System.out.println(p.getC());
}
PeopleDrink(int people){
this.people=people;
setC();//初始化可乐
}
private int people;//人数
private int c;//可乐
private int count;//计数器
private void setC(){
c++;
if(c%3==0)count+=2;
else count++;
if(count==people)return;
setC();
}
public int getC(){
return c;
}
}
复制代码
作者:
米阳SOHO
时间:
2015-12-2 20:44
萧未然 发表于 2015-11-29 11:22
我把它封装成对象了
不错,这种思路很值得借鉴
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2