黑马程序员技术交流社区

标题: 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝? [打印本页]

作者: xiaoxiaoyuxie    时间: 2017-3-9 15:44
标题: 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?
想的太简单导致写错啦,改正发上来,真是服了服了..
public static void main (String[] args){
        int peopleNumber=50;
        int count=howMany(peopleNumber,0);
       System.out.print("需要买"+count+"瓶即可");
    }

    public static int howMany (int peopleNum,int bottleCount){
        if ((bottleCount+exChange(bottleCount,0)) ==peopleNum){ //买的瓶数+瓶盖可换的瓶数等于人数时结束
//        if ((bottleCount+bottleCount/3) ==peopleNum){ //原来是这样写的,真是怀疑自己智商,忘了换回来的瓶子还有瓶盖.....
            return bottleCount;
        }
        bottleCount++;
        //递归调用
        return howMany(peopleNum,bottleCount);
    }
    public static int exChange(int capCount,int bottleCount){  //拿n个瓶盖能换多少瓶
        if (capCount/3>0){
            capCount-=3;
            bottleCount++;
            capCount++;
        }else
        {
            return bottleCount;
        }
        return exChange(capCount,bottleCount);
    }
作者: cmh19941129    时间: 2017-3-10 02:19
int numner;
number = 28 -28/3;不就行了,那么麻烦干什么啊
作者: lvshen9    时间: 2017-3-10 09:18
这个论坛有个帖子

作者: lvshen9    时间: 2017-3-10 09:22
请看这里
[学习交流]刚看见一道有意思的题,类似于找规律,发来给大家看看 http://bbs.itheima.com/mobcent/app/web/index.php?r=webapp/share&tid=339326&forumKey=3g1Nucon4UOjH3uT6l

作者: xiaoxiaoyuxie    时间: 2017-3-10 15:14
cmh19941129 发表于 2017-3-10 02:19
int numner;
number = 28 -28/3;不就行了,那么麻烦干什么啊

你的28/3=9 是换回来的瓶数,这些换回来的瓶子也是有盖子的,还能换三瓶...换回来的还能换...
作者: cmh19941129    时间: 2017-3-10 17:33
xiaoxiaoyuxie 发表于 2017-3-10 15:14
你的28/3=9 是换回来的瓶数,这些换回来的瓶子也是有盖子的,还能换三瓶...换回来的还能换... ...

可能给你解释有点麻烦,你自己全算下结果好了
作者: cmh19941129    时间: 2017-3-10 19:02
cmh19941129 发表于 2017-3-10 17:33
可能给你解释有点麻烦,你自己全算下结果好了

还要做个判断,%3等于 0时加一
作者: xiaoxiaoyuxie    时间: 2017-3-10 19:04
cmh19941129 发表于 2017-3-10 17:33
可能给你解释有点麻烦,你自己全算下结果好了

建议你再想想

作者: hailong5214    时间: 2017-3-10 19:47
cmh19941129 发表于 2017-3-10 02:19
int numner;
number = 28 -28/3;不就行了,那么麻烦干什么啊

哈哈                              
作者: cmh19941129    时间: 2017-3-10 19:52
xiaoxiaoyuxie 发表于 2017-3-10 19:04
建议你再想想

额,你可以算下结果,我没系统的学过数学,不太好给你解释,然后你的代码如果人数是三的倍数会报错的
作者: 被伤的    时间: 2017-3-10 20:37
楼上正解,人数是3的倍数的时候程序报错,栈内存溢出,应该是无限递归了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2