标签: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)。
标签:col out off turn 第一个 github end code div
原文地址:https://www.cnblogs.com/neverland0718/p/10933030.html