题解 | 统计每个月兔子的总数

解题分析:

  1. 就是一个斐波那契数列
  2. 为何是那个斐波那契?第三个月要生的兔子,其实正好是n-2个月诞生的,这样第n个月的兔子就等于n-1个月的兔子加上n-2个月的兔子,和斐波那契数列表现一致
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println(fib(in.nextInt()));
    }

    public static Map<Integer, Integer> map = new HashMap<>();

    public static int fib(int n) {
        if (n == 1 || n == 2) {
            map.put(n, 1);
            return 1;
        }
        return map.getOrDefault(n, fib(n - 1) + fib(n - 2));
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务