趣谈斐波那契数列
2016-04-09 17:17
344 查看
最早研究这个数列的当然是斐波那契喽。他当时是为了描述如下的兔子增长数目。
后来被广泛应用于各种场合,这是数列的定义如下:
首先呢,当我们看到这个数列时,想到的先是用递归的方法实现:
也可用三目运算符实现:
分析:
递归的时间复杂度:递归的次数*每次递归次数。
递归的空间复杂度:递归深度*每次递归的大小。
运用递归实现斐波那契数列,效率非常低。
时间复杂度为O(2^n),空间复杂度为O(n)。
斐波那契数列的优化:
斐波那契数列:0,1,1,2,3,5,8...
可得出规律:从第三个数开始,每个数都为前两个数之和。
注:时间复杂度为O(n),空间复杂度为O(1)
也可用数组的方式实现:
注:时间复杂的为O(n),空间复杂度为O(n)。
注意:
(1)在斐波那契数列中,一定注意当n=0时,结果为0。
(2)应用long long,防止越界。
后来被广泛应用于各种场合,这是数列的定义如下:
首先呢,当我们看到这个数列时,想到的先是用递归的方法实现:
也可用三目运算符实现:
分析:
递归的时间复杂度:递归的次数*每次递归次数。
递归的空间复杂度:递归深度*每次递归的大小。
运用递归实现斐波那契数列,效率非常低。
时间复杂度为O(2^n),空间复杂度为O(n)。
斐波那契数列的优化:
斐波那契数列:0,1,1,2,3,5,8...
可得出规律:从第三个数开始,每个数都为前两个数之和。
注:时间复杂度为O(n),空间复杂度为O(1)
也可用数组的方式实现:
注:时间复杂的为O(n),空间复杂度为O(n)。
注意:
(1)在斐波那契数列中,一定注意当n=0时,结果为0。
(2)应用long long,防止越界。
相关文章推荐
- 斐波那契数的两种实现方式———1.递归实现,2迭代实现
- 团队作业(一)
- Imp导入与exp导出
- 常用PLSQL子程序
- 神经网络资料
- 归并排序链表
- Java异常处理和I/O处理
- python函数式编程之(open(var1 if not var2 else var2))
- 虚幻4 TaskGraph小记
- 使用canvas编写环形图.
- 扩展型模式之Decorator(装饰器)模式
- 希尔排序算法的C语言实现示例
- JavaScript里的类和继承
- BZOJ3439: Kpm的MC密码
- 根据前序遍历判断二叉搜索树
- winedt 自动换行
- CSS3实例教程:详解calc()函数功能
- 关于写保护
- 20145120 《Java程序设计》实验一实验报告
- 关于storm0.10.0版本的一个小bug