题目链接
解题思路
-
递归法
-
DP动态规划
-
母函数
这里主要说一下母函数法,这是我最近在上组合数学时看到的方法。具体推导过程,请看下面的图片
AC代码
//母函数
class Solution {
public int fib(int N) {
double goldenRatio = (1 + Math.sqrt(5)) / 2;
return (int)Math.round(Math.pow(goldenRatio, N)/ Math.sqrt(5));
}
}
//递归
public class Solution {
public int fib(int N) {
if (N <= 1) {
return N;
}
return fib(N-1) + fib(N-2);
}
}
//DP
class Solution {
public int fib(int N) {
if (N == 0)
return 0;
if (N == 1)
return 1;
int[] dp = new int[N + 1];
dp[1] = 1;
dp[2] = 1;
for (int i = 3; i <= N; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[N];
}
}