剑指offer 09. 斐波那契数列

简介: 剑指offer 09. 斐波那契数列

题目描述

输入一个整数 n ,求斐波那契数列的第 n 项。

假定从 0 开始,第 0 项为 0。

数据范围

0≤n≤39

样例

输入整数 n=5 
返回 5


方法一:递推 O(n)

我们可以只用常数个变量来进行计算,具体思路如下:


初始化 a=0 和 b=1 ,如果 n=0 则直接返回 a=0 。

如果 n>0 则计算 c=a+b ,然后将 a 和 b 往后移一位即 a=b,b=c 。

来看个例子加深一下印象,假设传入参数 n 为 4 :


第一步: 初始化变量 a=0,b=1 。


c05d5656515048ee8d38bd21f88067ff.png

第二步: 开始循环,计算 c=a+b=1a 更新为 bb 更新为 c ,并且 n 要减 1

第三步 ~ 第五步: 和第二步一样,类似于是一个滚动数组,一直往后面移动。

第六步: 直到 n0 ,返回 a 就是最终的答案。

b458c5d8e77941809437d5c61fa8d733.png

class Solution {
public:
    int Fibonacci(int n) {
        int a = 0, b = 1;
        while (n--)
        {
            int c = a + b;
            a = b, b = c;
        }
        return a;
    }
};

欢迎大家在评论区交流~

目录
相关文章
LeedCode_04-斐波那契数列(剑指offer-10)
LeedCode_04-斐波那契数列(剑指offer-10)
【剑指offer】-斐波那契数列-07/67
【剑指offer】-斐波那契数列-07/67
剑指offer-9.斐波那契数列
剑指offer-9.斐波那契数列
55 1
|
存储
剑指Offer - 面试题10:斐波那契数列
剑指Offer - 面试题10:斐波那契数列
91 0
每日一题——四数之和(双指针解法)
每日一题——四数之和(双指针解法)
汉诺塔?爬楼梯?斐波那契?知道递归就够了
汉诺塔?爬楼梯?斐波那契?知道递归就够了
101 0
|
算法
斐波那契数列两种算法和青蛙跳台阶的两种实际问题
当我们看到这样的题时,心想就是一个简单的递归调用么。 但是,我们要看到这种算法的不足之处——效率低下。 首先简单的介绍一下 :
100 0
斐波那契数列(剑指offer 10-I)
斐波那契数列(剑指offer 10-I)
|
机器学习/深度学习 算法
数据结构与算法—递归算法(从阶乘、斐波那契到汉诺塔的递归图解)
递归:就是函数自己调用自己。 子问题须与原始问题为同样的事,或者更为简单; 递归通常可以简单的处理子问题,但是不一定是最好的。
141 0
AcWing 21. 斐波那契数列
AcWing 21. 斐波那契数列
111 0
AcWing 21. 斐波那契数列

热门文章

最新文章