华为机试 HJ22汽水瓶【java递归实现】

描述
某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。
小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
数据范围:输入的正整数满足 1≤n≤100

package com.wy.leetcode;

import java.util.Scanner;

/**
 * @author HelloWorld
 * @create 2022/4/18 22:29
 * @email helloworld.dng@gmail.com
 */
public class DrinkCoca {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            if (n == 0) {
                break;
            }
            System.out.println(doCount(n));
        }
    }

    /**
     * @description 三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶
     * @param n 空气水瓶数量
     * @return int
     */
    private static int doCount(int n) {
        /*
            当 n = 1, 2 换不到汽水
            当 n = 3, 可以换一瓶
            当 n = 4, 可以换两瓶

            每换一次 空瓶数量加1,获得的汽水数量加1,递归调用即可。
         */
        switch (n) {
            case 1 :
            case 2 :
                return 0;
            case 3:
                return 1;
            case 4:
                return 2;
        }
        return 1 + doCount(n - 3 + 1);
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值