斐波那契数
斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你n ,请计算 F(n) 。
- 确定dp数组为斐波那契数数组,i的含义为该斐波那契数的第i个;
- 由F(n) = F(n - 1) + F(n - 2)得,dp[i]=dp[i-1]+dp[i-2];
- 将题目所知道=的原始值初始化:F(0)=0——>dp[0]=0;F(1)=1——>dp[1]=1;
- 确定遍历顺序:F(n)是由n-1&n-2推导得出的,所以遍历顺序为从前往后;
- 数组推例:0 1 1 2 3 5 8 13 21 34 55 89 144;
- 代码:
public class Solution {
public static int fib(int n) {
if (n <= 1) return n;
int[] dp = new int[n + 1];
dp[0] = 0;
dp[1] = 1;
for (int index = 2; index <= n; index++){
dp[index] = dp[index - 1] + dp[index - 2];
}
return dp[n];
}public static void main(String[] args) {
System.out.println(fib(10));
}
} -
截图:
-
总结:收获了动态规划中递归思想,这个在我看来和扣铁链一样属于层层递进的。在最后代码运行之前要记得加上main函数使其可以运行。