A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

想的太简单导致写错啦,改正发上来,真是服了服了..
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);
    }

10 个回复

倒序浏览
int numner;
number = 28 -28/3;不就行了,那么麻烦干什么啊
回复 使用道具 举报
回复 使用道具 举报
请看这里
[学习交流]刚看见一道有意思的题,类似于找规律,发来给大家看看 http://bbs.itheima.com/mobcent/app/web/index.php?r=webapp/share&tid=339326&forumKey=3g1Nucon4UOjH3uT6l
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
cmh19941129 发表于 2017-3-10 02:19
int numner;
number = 28 -28/3;不就行了,那么麻烦干什么啊

你的28/3=9 是换回来的瓶数,这些换回来的瓶子也是有盖子的,还能换三瓶...换回来的还能换...
回复 使用道具 举报
xiaoxiaoyuxie 发表于 2017-3-10 15:14
你的28/3=9 是换回来的瓶数,这些换回来的瓶子也是有盖子的,还能换三瓶...换回来的还能换... ...

可能给你解释有点麻烦,你自己全算下结果好了
回复 使用道具 举报
cmh19941129 发表于 2017-3-10 17:33
可能给你解释有点麻烦,你自己全算下结果好了

还要做个判断,%3等于 0时加一
回复 使用道具 举报
cmh19941129 发表于 2017-3-10 17:33
可能给你解释有点麻烦,你自己全算下结果好了

建议你再想想
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
cmh19941129 发表于 2017-3-10 02:19
int numner;
number = 28 -28/3;不就行了,那么麻烦干什么啊

哈哈                              
回复 使用道具 举报

额,你可以算下结果,我没系统的学过数学,不太好给你解释,然后你的代码如果人数是三的倍数会报错的
回复 使用道具 举报
被伤的 来自手机 中级黑马 2017-3-10 20:37:59
11#
楼上正解,人数是3的倍数的时候程序报错,栈内存溢出,应该是无限递归了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马