- 递归。由于0=<n<=100,递归会超时。
- 动态规划。动态方程f[n] = f[n-1] + f[n-2].
public static int fib(int n) {
if (n == 0) return 0;
if (n == 1) return 1;
int[] f = new int[n + 1];
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= n; i++) {
f[i] = (f[i - 1] + f[i - 2]) % 1000000007;
}
return f[n];
}