算法复习:斐波那契数列
来源:互联网 发布:数据库开发模式 编辑:程序博客网 时间:2024/06/07 05:10
递归实现:
public static int fibonacci(int n){ if(n <= 2){ return 1; }else{ return fibonacci(n-1) + fibonacci(n-2); } }
时间复杂度:O(2^(N/2))<=T(N)<=O(2^N)
特点:
效率很低,例如我们要求fibonacci(10),那么我们需要先求fibonacci(8)和fibonacci(9),同样,要求fibonacci(9),就要求fibonacci(8)和fibonacci(7),这样我们就重复求了fibonacci(8)。随着n的增大重复的节点急剧增大。
非递归实现:
public static int fibonacci(int n){ if(n <= 2) return 1; int fibNMinusOne = 1; int fibNMinusTwo = 0; int fibN = 0; for(int i = 2;i <= n;i++){ fibN = fibNMinusOne + fibNMinusTwo; fibNMinusTwo = fibNMinusOne; fibNMinusOne = fibN; } return fibN;}
时间复杂度:O(N)
相关算法题:
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
阅读全文
0 0
- 算法复习:斐波那契数列
- 斐波那契数列算法实现
- 斐波那契数列php算法
- 斐波那契数列算法
- 斐波那契数列算法分析
- 斐波那契数列算法分析
- 算法练习---斐波那契数列
- 斐波那契数列算法分析
- 斐波那契数列算法分析
- 斐波那契数列算法
- 算法应用-斐波那契数列
- 斐波那契数列算法分析
- 斐波那契数列算法分析
- 斐波那契数列算法分析
- 斐波那契数列算法分析
- 斐波那契数列 C++算法
- 斐波那契数列算法分析
- 斐波那契数列算法分析
- (转)全球最权威人脸识别测试PK
- 2017.07.14【NOIP提高组】模拟赛B组小结
- Springboot集成Mybatis,采用druid数据源及mysql数据库为例
- MYSQL子查询和分组查询
- 【数位DP】【357. Count Numbers with Unique Digits】
- 算法复习:斐波那契数列
- opencv学习(1)之基本数据结构
- Python-Numpy随机数
- 深入理解PriorityQueue优先队列
- 斯坦福机器学习笔记:梯度下降法
- 最小树形图模板
- #WEBGIS#校园地图系统开发- 4、制作并发布叠加层(矢量)
- xshell 连接 hyper-v 虚拟机的正确姿势
- (转)惊鸿一瞥:人工智能,改变研究方式的力量