题解 | 统计每个月兔子的总数
解题分析:
- 就是一个斐波那契数列
- 为何是那个斐波那契?第三个月要生的兔子,其实正好是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)); } }