斐波那契数列实现--递归,迭代,数组,队列
2014-09-18 10:33
447 查看
1.递归
效率低,除了最后一个数,每个数都被重复计算若干次
2.迭代
效率最高,时间复杂度O(n),空间复杂度是O(1)
3.数组
效率一般,比递归快,时间复杂度O(n),空间复杂度是O(n)
4.队列
时间复杂度O(n),空间复杂度是O(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语言斐波那契数列的四种实现方式—递归,迭代,数组,队列
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- 递归方式、迭代方式实现的斐波那契数列。
- php递归和迭代实现斐波那契数列
- 栈实现斐波那契数列递归过程的非递归模拟
- 非递归实现斐波那契数列———修改版
- 递归与非递归实现斐波那契数列
- Fibonacci(斐波那契)数列的递归与非递归实现 python
- 用数组实现斐波那契数列
- Python:斐波那契数列递归实现方法
- python实现费波纳茨数列——递归、迭代
- 斐波那契数列迭代和递归对比
- 斐波那契数列的递归与非递归实现
- 数组实现斐波那契数列
- 斐波那契数列数组递推,普通递归,记忆化搜索,矩阵快速幂,和公式法
- 斐波那契数列的递归实现
- OJOJ:斐波那契数列的实现——递归与非递归实现
- 斐波拉契数列进行编译,采用三种不同的方法实现,迭代,递归,数组