斐波那契数

题目

斐波那契数 (通常用 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];
    }
};
posted @ 2023-06-27 11:22  铜锣湾陈昊男  阅读(13)  评论(0)    收藏  举报