剑指Offer_斐波那契数列

写一个函数,输入n,求斐波那契数列的第n项。
F(0)=0,F(1)=1
F(N)=F(N-1)+F(N-2),其中N>1。
斐波那契数列由0,1开始,之后的斐波那契数就是由前两项相加而得。

输出要求:输出答案需要取模1e9+7(1000000007),如计算初始结果为1000000008,请返回1。

分析:采用递归法,时间复杂度无法通过要求。
因此用数组存储每一项的结果,第n项时,只需将n-1项和n-2项相加的和输出即可。

class Solution
{
   public:
   int fib(int n)
   {
      vector<int> ans{0,1};
      for(int i=2;i<=n;i++{
        ans.push_back((ans[i-1]+ans[i-2])%1000000007);
      }
      return ans[n];
};
发布了22 篇原创文章 · 获赞 1 · 访问量 340

猜你喜欢

转载自blog.csdn.net/weixin_43086349/article/details/104674775