• [java]10元买汽水,2个瓶子换一瓶,4个盖子换一瓶,最多能喝多少瓶


    public static void main(String[] args) {
            System.out.println(buyWater(10));
        }
        static int buyWater(int money){ 
          //非递归
    int count=money/2; int bo=count; int cap=count; while(bo>=2||cap>=4){ while(bo>=2){ count++; //换一瓶,获得一个瓶子,扣除两个瓶子 bo=bo+1-2; cap++; } while(cap>=4){ count++; //换一瓶,获得一个瓶盖,扣除4个瓶盖 cap=cap+1-4; bo++; } } return count; }

     最后结果:15瓶

    总结:要用while循环把瓶子盖子消耗完,单步调试发现,不够15瓶的情况都是没有消耗完瓶子盖子。


    下面是递归方式:

    int total=10/2;
    buyWater1(total,total,total);
    static void buyWater1(int total,int c,int b){
            //递归
            int water=total,cap=c,bo=b;
            
            int newWater=cap/4+bo/2;
            
            cap=newWater+cap%4;
            bo=newWater+bo%2;
            
            water+=newWater;
            
            if(cap<4&&bo<2){
                System.out.println(water);
            }
            else{
                //传water是为了累加
                buyWater1(water,cap,bo);
            }
            
        }
  • 相关阅读:
    Spring Boot入门
    Spring MVC文件上传和下载
    Spring MVC异常处理
    SpringMVC
    linux(2)
    linux(1)
    白盒测试
    LoadRunner(8)
    LoadRunner(7)
    LoadRunner(6)
  • 原文地址:https://www.cnblogs.com/findlisa/p/11436648.html
Copyright © 2020-2023  润新知