码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer系列4:斐波那契数列

时间:2019-05-27 20:47:41      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:col   out   off   turn   第一个   github   end   code   div   

剑指offer第九题,这个题很古老了。第一个想到的肯定是递归,很简单。

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 class Solution {
 5 public:
 6     int Fibonacci(int n) {
 7         if (n == 0)
 8         {
 9             return 0;
10         }
11         if (n==1||n==2)
12         {
13             return 1;
14         }
15         else
16         {
17             return Fibonacci(n-1)+ Fibonacci(n-2);
18         }
19 
20     }
21 };
22 int main()
23 {
24     Solution so;
25     int re = so.Fibonacci(5);
26     cout << re<<endl;
27     return 0;
28 }

第二种是我在github上看到的思路,变递归为for循环

 1 class Solution {
 2 public:
 3     int Fibonacci(int n) {
 4         if (n == 0)
 5         {
 6             return 0;
 7         }
 8         if (n==1||n==2)
 9         {
10             return 1;
11         }
12         else
13         {
14             int one = 1,two=1,cur=0;
15             for (int i = 3; i <= n; i++)
16             {
17                 cur = one + two;
18                 one = two;
19                 two = cur;
20             }
21             return cur;
22         }
23 
24     }
25 };

思路是用两个变量存要加的两项的值,用for循环一直更新,递归的复杂度是指数,for循环的复杂度是0(n)。

剑指offer系列4:斐波那契数列

标签:col   out   off   turn   第一个   github   end   code   div   

原文地址:https://www.cnblogs.com/neverland0718/p/10933030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!