案例:啤酒问题(递归的应用)

啤酒问题 啤酒2元一瓶,4个盖子可以换一瓶,2个空瓶可以换一瓶,请问10元可以喝多少瓶?

public class DemoTest {                                              
    public static int totalNumber;                                   
    public static int lastBottleNumber;                              
    public static int lastCoverNumber;                               
    public static void main(String[] args) {                         
        //啤酒问题 啤酒2元一瓶,4个盖子可以换一瓶,2个空瓶可以换一瓶,请问10元可以喝多少瓶?               
        buy(10);                                                     
        System.out.println("总数:"+totalNumber);                       
        System.out.println("剩余瓶子数:"+lastBottleNumber);               
        System.out.println("剩余盖子数:"+lastCoverNumber);                
    }                                                                
    public static void buy(int money){                               
        //1、先买了再说                                                    
        int buyNumber=money/2;                                       
        totalNumber+=buyNumber;                                      
                                                                     
        //2、把瓶子和盖子换算成前继续买                                            
        //计算本轮总的盖子和瓶子总数                                              
        int allBottleNumber = buyNumber+lastBottleNumber;            
        int allCoverNumber = buyNumber+lastCoverNumber;              
                                                                     
        int allmoney=0;                                              
                                                                     
        if(allBottleNumber>=2){                                      
            allmoney+=(allBottleNumber/2)*2;                         
        }                                                            
        lastBottleNumber=allBottleNumber%2;                          
                                                                     
        if(allCoverNumber>=4){                                       
            allmoney+=(allCoverNumber/4)*2;                          
        }                                                            
        lastCoverNumber=allCoverNumber%4;                            
                                                                     
        if(allmoney>=2){                                             
            buy(allmoney);                                           
        }                                                            
                                                                     
    }                                                                
}                                                                    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值