少吃鱿鱼 2022-09-03 22:10 采纳率: 100%
浏览 22
已结题

关于java递归栈溢出的问题,如何解决?

需求:啤酒2元1瓶,4个盖子可以换一瓶,2个空瓶可以换一瓶,请问10元钱可以喝多少瓶酒,剩余多少空瓶和盖子。

public class FeiDiGui2 {
    public static int totalNumber;    //总瓶数
    public static int lastBottle;    //统计剩余的酒瓶
    public static int lastCover;    //统计剩余的瓶盖

    public static void main(String[] args) {
        buy(10);
        System.out.println("总瓶数:"+totalNumber);
        System.out.println("剩余瓶子:"+lastBottle);
        System.out.println("剩余瓶盖:"+lastCover);
    }

    public static void buy(int money){
        //先算出money能买几瓶酒,以及盖子和瓶子个数
        int buyNumber=money/2;
        totalNumber+=buyNumber;

        int bottle=buyNumber+lastBottle;
        int cover=buyNumber+lastCover;

        //统计可以换算成的钱
        int allMoney=0;

        if(cover >= 4)
        {
            allMoney +=(cover/4)*2;
        }
        lastCover=bottle%4;

        if(bottle >= 2)
        {
            allMoney +=(bottle/2)*2;
        }
        lastBottle=bottle%2;


        if(allMoney >= 2) {
            buy(allMoney);
        }
    }
}

当buy里面的数大于6之后,程序就会报如下错误

img

不太理解为什么,麻烦各位帮忙看看,谢谢

  • 写回答

1条回答 默认 最新

  • 新手学堂 2022-09-03 23:05
    关注

    这一句写错了:lastCover=bottle%4;
    改成:lastCover= cover%4;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 9月12日
  • 已采纳回答 9月4日
  • 修改了问题 9月3日
  • 创建了问题 9月3日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装