美文网首页
递归问题

递归问题

作者: 康大侠 | 来源:发表于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; 
    }
}

相关文章

  • LeetCode-N Queens

    N皇后问题。经典回溯问题: 以下是递归及非递归的方法:

  • 递归问题

    递归是让我糊涂的问题之一,快变成我的疑难杂症了。 下面我用一到面试题来刺激我吧,以后看到的时候就想优化了 /* *...

  • 递归问题

  • 递归问题

    买汽水 转载地址[https://blog.csdn.net/qq_34399639/article/detail...

  • 第二章 递归和回溯

    递归 递归的含义:任何调用自身的函数称为递归。用递归求解问题要点在于递归函数调用自身取解决一个规模比原始问题小一些...

  • 递归2--表达式求值

    用递归解决递归形式的问题: 表达式的定义是递归的:

  • 前端开发 -- 算法模式(递归和动态规划)

    递归 递归是一种解决问题的方法,它解决问题的各个小部分,直到解决最初的大问题,递归通常涉及到函数的自身调用。递归函...

  • 动态规划&贪心算法

    动态规划问题,问题可以分为子问题的最优解,从而递归下去。也可以自下而上的循环来解决,就是找到递归的终点,从递归的终...

  • 递归算法介绍及Java应用实战

    什么是递归算法 递归算法是把问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解。一个...

  • 递归

    什么是递归? 递归是指把大问题化成小而相似的问题,然后小问题变化为更小的问题,直到能很容易解决。 递归必要条件 1...

网友评论

      本文标题:递归问题

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