【剑指Offer】斐波那契数列

妖精的绣舞 提交于 2019-11-28 14:01:27

题目:要求输入一个整数n,请你输出斐波那契数列的第n项

 

A1:教科书方法,递归,但是时间复杂度随着n的增大而递增 ====> 不实用

A2:可以把得到的数列中间项保存起来,避免重复计算  ====> 时间复杂度O(n)

A3:数据公式(太高级了,不太懂)

 

//O(n)方法,保存中间项

class Solution {
public:
    int Fibonacci(int n) {
        int ret[] = {0,1};
        if(n <= 1)
        {
            return ret[n];
        }
        
        long long fib_1 = 0;
        long long fib_2 = 1;
        long long fib_n = 0;
        
        for(int i = 2; i <= n ;i++)
        {
            fib_n = fib_1 + fib_2;
            fib_1 = fib_2;
            fib_2 = fib_n;
        }
        return fib_n;
    }
};

  

 

 

相关题目:

  求和(输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来)

  寻找第K大(有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。)

  生成格雷码(在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。给定一个整数n,请返回n位的格雷码,顺序为从0开始。)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!