斐波那契数列实现--递归,迭代,数组,队列
来源:互联网 发布:手机淘宝查号截图视频 编辑:程序博客网 时间:2024/05/27 16:42
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: }
0 0
- 斐波那契数列实现--递归,迭代,数组,队列
- C语言斐波那契数列的四种实现方式—递归,迭代,数组,队列
- 斐波那契数列迭代和递归实现
- 斐波那契数列【迭代+递归】
- 斐波那契数列(迭代和递归)
- 斐波那契数列的递归和迭代实现之差异
- C语言实现斐波那契数列的两种方法(递归和迭代)
- 剑指offer----斐波那契数列的实现--递归和迭代
- php递归和迭代实现斐波那契数列
- 递归方式、迭代方式实现的斐波那契数列。
- php递归与迭代实现斐波那契数列
- 通过Java迭代实现斐波那契数列
- 斐波那契数列(迭代)
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- 斐波那契数列的递归、迭代(循环)、通项公式三种实现
- 斐波那契数列的递归,迭代(循环),通项公式三种实现
- 链表中倒数第K个结点
- sysctl命令详解
- 哈希表(hashtable)的javascript简单实现
- 编译 QGIS 1.7.0的步骤及相关事项
- Android之Widget学习总结
- 斐波那契数列实现--递归,迭代,数组,队列
- Javascript导出Excel的方法
- VM args -Xss160k stack size
- XSS攻击以及防御
- boost库的使用
- An Objective-C message was sent to a deallocated "XXTableViewController"
- 屏幕亮度调节(网络整理,去伪存真)
- 我的毕业十年
- Flex 使用方向键控制光标位置