题解 | #汽水瓶#递归法

汽水瓶

https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f

import java.util.Scanner;
import java.util.LinkedList;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //本题不排序,新增速度LinkedList > ArrayList
        LinkedList<Integer> list=new LinkedList<>();
        int inp;
        while((inp=in.nextInt())>1){
            list.add(toRes(inp));
        }
        for(int res:list){
            System.out.println(res);
        }
    }
    private static int toRes(int num){//利用递归法得到一个输入所得的饮料数
        if(num<2){//1个0个没得用
            return 0;
        }
        if(num==2){//借一个=3个,喝完还一个
            return 1;
        }
        int n=0;
        if(num%3==1){
            n+=1;
        }else if(num%3==2){
            n+=2;
        }
        int res=num/3;//不管取模=012,最终都是要商的
        n+=res;
        return res+toRes(n);
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务