斐波那契数
题目
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。
思路
首先我们按照标准的动态规划的步骤进行,五步走:
- 确定dp数组下标,dp[i]表示的是斐波那契数的第i个值
- 递推公式为dp[i] = dp[i-1] + dp[i-2]
- dp的初始化,dp[0] = 0,dp[1] = 1
- 确定遍历顺序,这个先看后面的
- 举例推导dp数组,将在程序中打印出来
代码
class Solution {
public:
int fib(int n) {
//确定dp数组下标,dp[i]表示的是斐波那契数的第i个值
//递推公式为dp[i] = dp[i-1] + dp[i-2]
//dp的初始化,dp[0] = 0,dp[1] = 1
//确定遍历顺序,这个先看后面的
//举例推导dp数组,将在程序中打印出来
if(n <= 1) {
return n;
}
vector<int> dp(n + 1);
dp[0] = 0;
dp[1] = 1;
for(int i = 2; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
//printf("dp[i] = %d\n", dp[i]);
}
return dp[n];
}
};

浙公网安备 33010602011771号