美文网首页
递归问题

递归问题

作者: 康大侠 | 来源:发表于2021-05-13 14:17 被阅读0次
    1. 买汽水

    转载地址

    题目:1块钱1瓶汽水,2个空瓶可以换一瓶汽水,3个瓶盖可以换一瓶汽水,问: 20块钱可以喝多少瓶汽水?

    • 一瓶汽水1元,喝完之后有1个瓶盖和1个空瓶。
    • 1个瓶盖等于1/3瓶汽水,1个空瓶等于1/2瓶汽水。
    • 一元钱 = 一瓶汽水 = 可以喝的部分加上一个瓶盖加上一个空瓶 = 1+1/2+1/3瓶可以喝的汽水。
    • 得到20*(1+1/2+1/3)=20+10+2/3+6=36瓶汽水+两个瓶盖。
    • 但实际上要减去一瓶,否则最后一瓶汽水没有瓶子装。
      算法设计

    初始化
    有20元钱,money = 20;
    瓶盖和空瓶为0,bottle = 0; cap = 0;
    定义一个方法,返回值为总的瓶数。
    int buyWater(int money,int bottle,int cap)

    public class BuyWaterDemo {
        public static void main(String[] args) {
            int money = 20;
            int bottle = 0;
            int cap = 0;
            int sum = buyWater(money, bottle, cap);
            System.out.println(sum+"瓶汽水。");
        }
        public static int buyWater(int money,int bottle,int cap) {
            int num = 0;
            if(money>=1) {
                num++;
                bottle++;
                cap++;
                num += buyWater(money-1,bottle,cap);
            }else if(bottle>=2) {
                num++;
                bottle++;
                cap++;
                num += buyWater(money,bottle-2,cap);
            }else if(cap>=3) {
                num++;
                bottle++;
                cap++;
                num += buyWater(money,bottle,cap-3);
            }
                return num; 
        }
    }
    

    相关文章

      网友评论

          本文标题:递归问题

          本文链接:https://www.haomeiwen.com/subject/szatjltx.html