菲波那切数列几种实现
菲波那切数列几种实现
- 递归
- for循环
- while循环
- 特征方程
个人一点愚见,有问题还望指出勿喷
特征方程是看过大佬们的结果才知道的,还特意去学习了被忘掉的特征方程.
递归
/*** 递归计算* 时间复杂度O(n^2)* 如果n比较大时会导致假死,因为递归计算太费时间,每次计算次数大致可以参考2的n次方* @param n 位置* @return int*/private static int fibRecursion(int n) {if (n < NUM) {return n;}return fibRecursion(n - 1) + fibRecursion(n - 2);}
for循环
/*** for循环计算* 时间复杂度O(n)** @param n 位置* @return int*/private static int fibLoop(int n) {if (n < NUM) {return n;}int first = 0;int second = 1;for (int i = 0; i < n - 1; i++) {int temp = first + second;first = second;second = temp ;}return second;}
while循环
/*** 循环计算* 时间复杂度O(n)** @param n 位置* @return int*/private static int fibWileLoop(int n) {if (n < NUM) {return n;}int first = 0;int second = 1;while (n-- > 1) {second += first;first = second - first;}return second;}
特征方程
/*** 特征方程* 时间复杂度O(1)* 自测时丢失精度* @param n 位置* @return int*/private static int fibMath(int n) {double c = Math.sqrt(5);return (int) (((Math.pow((1 + c) / 2, n) - Math.pow((1 - c) / 2, n)) / c));}
菲波那切数列几种实现相关推荐
- 求菲波那切数列数列第n项三种方法小结
菲波那切数列数列的应用场景还是比较多的,比如可以在考试的时候考你递归啊,早上碰到的一道题就是这样,骄傲地写下递归方程,结果TLE了,然后旁边的大神给我说了一个叫滚动数组的东西...题目是这样的You ...
- 阶乘 c语言 fushu,JS递归实现阶乘和菲波那切数列
当我们需要使用递归来完成某些操作的时候,我们先要了解什么是递归 什么是递归? 递归,就是在运行的过程中调用自己. 一般来说,递归需要有边界条件.递归前进段和递归返回段. 当边界条件不满足时,递归前进: ...
- php菲波那切数列,php实现菲波那切数列和杨辉三角
1.递归 显示斐波那契数列 function recursion($num){ //判断是否小于0 if($num<0){ return -1; } if($num==1){ return 0 ...
- Python多种方法生成菲波那切数列
文章目录 一.顺序输出 二.利用递归函数实现 三.循环 四.利用列表实现 五.利用reduce实现 六.利用生成器实现 七.利用魔术方法实现 记录多种方法生成菲波那切数列 一.顺序输出 代码如下: # ...
- 数楼梯--高精度递推、菲波那切数列
题目描述 楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶. 编一个程序,计算共有多少种不同的走法. 输入格式 一个数字,楼梯数. 输出格式 输出走的方式总数. 输入样例 4 输出样例 5 说明/ ...
- python函数-返回菲波那切数列for,range,append
#返回菲波那切数列的列表 def fibs(num): fibs=[0,1] for i in range(num): fibs.append(fibs[-2]+fib ...
- 计算菲波那切数列前50项
计算菲波那切数列 前50项 public class Main {public static void main(String[] args) {// temp 1 表示第一个数 temp 2 表示第 ...
- 008 -菲波那切数列
对第n位菲波那切数列的值进行求解 菲波那切数列 (1)递归方法实现 //递归实现斐波那契数列public static int calculateOne(int num) {if(num==0)ret ...
- 菲波那切数列 java_兔子的繁殖问题即菲波那切数列 java实现
问题:兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来.初始有一对小兔子,假设所有兔子都不死,那么一年以后可以繁殖多少对兔子?思路: 每月的兔子总数:1.1.2.3.5.8.13.- ...
最新文章
- 选择问题 and 字谜游戏问题
- python软件开发的一般流程-Python各个岗位的开发流程
- Python中断多重循环的两种思路
- 用于文档上下文感知推荐的卷积矩阵分解
- Qt工作笔记-右键删除视图中的Item【坐标映射】
- [新手学Java]使用beanUtils控制javabean
- Sql语句常用关键字
- pb利用datawindow查询符合条件的数据并且过滤掉其他数据_牟宇航:百度OLAP数据库——Palo...
- 开源巨献:Google最热门60款开源项目
- 沙箱环境和测试环境区别_带你一图了解iOS应用内购买流程,掌握测试环境搭建与测试方法...
- Win8.1系统System.exe进程占用磁盘率高达100%如何解决
- (Linux)mongodb启用安全认证登录
- vnc-4.0-winsrc版本之winvnc工程分析_源码研究
- 著名数学家龚升的论述揭示高中“函数近代严格定义” 有非常明显错误
- 使用 i18n 时踩的坑
- Android 学习之《第一行代码》第6章:adb调试:pemission denied以及模拟器不能获取root权限问题的解决
- 2020 CCPC 秦皇岛 K. Kingdom‘s Power(树形DP)
- 【SysML精粹】模块定义图
- 和joomla模板开发死磕(1)
- JAVA捕获异常小结