递归之猴子吃桃、啤酒问题

package com.itheima.d3_recursion;

public class RecursionTest4 {
    public static void main(String[] args) {
        // 目标:认识递归:做猴子吃桃问题。
        // 公式:f(n + 1) = f(n) - f(n) / 2 - 1
        // 变形的:
        //     2f(n+1) = 2f(n) - f(n) - 2
        //     f(n) = 2f(n+1) + 2
        // 终结点:f(10) = 1
        // 问题 f(1) = ?
        System.out.println(f(1));
        System.out.println(f(2));
        System.out.println(f(3));
        System.out.println(f(4));
        System.out.println(f(5));
        System.out.println(f(6));
        System.out.println(f(7));
        System.out.println(f(8));
        System.out.println(f(9));
        System.out.println(f(10));
    }

    public static int f(int n){
        if(n == 10){
            return 1;
        }
        return 2*f(n + 1) + 2;
    }
}

package com.itheima.d1_test;

public class BeerTest {
    public static int totalNumber; // 记录买的总酒数。
    public static int lastBottleNumber; // 记录每轮剩余的瓶子
    public static int lastCoverNumber; // 记录每轮剩余的盖子
    public static void main(String[] args) {
        // 目标:啤酒问题的解决。
        buy(10);
        System.out.println("总酒数:" + totalNumber);
        System.out.println("剩余的瓶子数:" + lastBottleNumber);
        System.out.println("剩余的盖子数:" + lastCoverNumber);
    }

    // 拿钱买酒
    public static void buy(int money){
        // 1、先看money能买多少瓶?
        int number = money / 2; // 5
        totalNumber += number;

        // 2、把瓶子和盖子换算成钱,继续来买酒。
        // 算一下总的盖子数和瓶子数。
        int allBottleNumbers = lastBottleNumber + number;
        int allCoverNumbers = lastCoverNumber + number;

        // 换算成总钱,继续来买。
        int allMoney = 0;
        if(allBottleNumbers >= 2){
            allMoney += (allBottleNumbers / 2) * 2;
        }
        // 计算出本轮剩余的瓶子数。
        lastBottleNumber = allBottleNumbers % 2;

        if(allCoverNumbers >= 4){
           allMoney += (allCoverNumbers / 4) * 2;
        }
        // 计算本轮剩余的盖子数
        lastCoverNumber = allCoverNumbers % 4;

        // 判断一下换算的钱是否够2元
        if(allMoney >= 2){
            buy(allMoney);
        }
    }
}

posted @ 2022-12-09 21:34  四四一百六  阅读(53)  评论(0)    收藏  举报