C语言斐波那契数列的四种实现方式—递归,迭代,数组,队列
2016-12-06 00:25
726 查看
自博客园转载:
1.递归
效率低,除了最后一个数,每个数都被重复计算若干次
1: //递归实现
2: public static int Fib1(int n)
3: {
4: if (n < 3)
5: {
6: return 1;
7: }
8: else
9: {
10: return Fib1(n - 1) + Fib1(n - 2);
11: }
12: }
2.迭代
效率最高,时间复杂度O(n),空间复杂度是O(1)
3.数组
效率一般,比递归快,时间复杂度O(n),空间复杂度是O(n)
4.队列
时间复杂度O(n),空间复杂度是O(1)
1.递归
效率低,除了最后一个数,每个数都被重复计算若干次
1: //递归实现
2: public static int Fib1(int n)
3: {
4: if (n < 3)
5: {
6: return 1;
7: }
8: else
9: {
10: return Fib1(n - 1) + Fib1(n - 2);
11: }
12: }
2.迭代
效率最高,时间复杂度O(n),空间复杂度是O(1)
1: //迭代实现 2: public static int Fib2(int n) 3: { 4: if (n < 3) 5: { 6: return 1; 7: } 8: else 9: { 10: int first = 1; 11: int second = 1; 12: int temp = 0; 13: 14: for (int i = 0; i < n - 2; i++) 15: { 16: temp = first + second; 17: first = second; 18: second = temp; 19: } 20: return temp; 21: } 22: }
3.数组
效率一般,比递归快,时间复杂度O(n),空间复杂度是O(n)
1: //数组实现 2: public static int Fib3(int n) 3: { 4: List<int> list = new List<int>(); 5: list.Add(1); 6: list.Add(1); 7: int count = list.Count; 8: 9: while (count < n) 10: { 11: list.Add(list[count - 2] + list[count - 1]); 12: count = list.Count; 13: } 14: 15: return list[count - 1]; 16: }
4.队列
时间复杂度O(n),空间复杂度是O(1)
1: //队列实现 2: public static int Fib4(int n) 3: { 4: Queue<int> queue = new Queue<int>(); 5: queue.Enqueue(1); 6: queue.Enqueue(1); 7: 8: for (int i = 0; i <= n - 2; i++) 9: { 10: queue.Enqueue(queue.AsQueryable().First() + queue.AsQueryable().Last()); 11: queue.Dequeue(); 12: } 13: return queue.Peek(); 14: }
相关文章推荐
- 斐波那契数列实现--递归,迭代,数组,队列
- 斐波那契数列实现--递归,迭代,数组,队列
- 递归方式、迭代方式实现的斐波那契数列。
- 数据结构与算法分析-用C语言实现队列(数组方式)
- 斐波那契数列的实现(四种方法 递归,非递归)
- c语言数组方式实现静态循环队列
- 循环数组实现队列的四种方式
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- 斐波那契数列的四种简单实现方式
- php递归和迭代实现斐波那契数列
- 二叉树的遍历的迭代和递归实现方式
- 斐波那契数列的递归和非递归实现
- C语言数组实现队列
- 队列(一)——队列的数组实现方式
- C语言实现 二分查找数组中的Key值(递归和非递归)
- 斐波那契数列迭代和递归对比
- java递归实现斐波那契数列
- 斐波那契数列的两种实现方式(递归(大于O(n方))和迭代(O(n))----网易笔试2013录
- 使用数组实现队列----《数据结构与算法分析---C语言描述》