题目描述:
标签:数组
斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
给你 n ,请计算 F(n) 。
代码:
思路分析:动态规划五部曲
1、确定dp数组以及下标的含义——这里dp[i]是指斐波那契数值
2、确定递推公式,dp[i]=dp[i-1]+dp[i-2]
3、dp数组初始化,dp[0]=0,dp[1]=1
4、确定遍历顺序,从前向后遍历
5、举例推导dp数组,即当n=10,dp数组是多少手算用来验证!
《一、动态规划解法》
class Solution {
public int fib(int n) {
if(n <= 1){
return n;
}
int[] dp = new int[2];
dp[0] = 0;
dp[1] = 1;
for(int i = 2;i <= n;i++){
int sum = dp[0] + dp[1];
dp[0] = dp[1];
dp[1] = sum;
}
return dp[1];
}
}
《二、递归解法》
class Solution {
public int fib(int n) {
if(n == 0){
return 0;
}
if(n == 1){
return 1;
}
return fib(n-1)+fib(n-2);
}
}