【剑指Offer JZ1.斐波那契数列】|刷题打卡

125 阅读1分钟

一、题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。

示例1:

输入

4

返回值

3

二、思路分析

难度:入门

典型的递归算法实例之一,所以我们首先想到递归算法解决该问题。另外,我们还可以使用动态规划的思想。

三、AC 代码

语言:C++

1. 递归法

int Fibonacci(int n) {
        if (n == 0 || n == 1) 
            return n;
        return Fibonacci(n-1) + Fibonacci(n-2);
    }

2. 动态规划

int Fibonacci(int n) {
    vector<int> dp(n+1, 0);
        dp[1] = 1;
        for (int i=2; i<=n; ++i) {
            dp[i] = dp[i-1] + dp[i-2];
        }
        return dp[n];
}

四、总结

这类题目基本上都可以使用递归和动态规划解决,类似的题目以后遇到我们再细聊。