斐波那契序列-java
来源:互联网 发布:网络贷款利息如何计算 编辑:程序博客网 时间:2024/05/23 07:24
//斐波那契序列 求F(100)public class Fibonacci { //最简单的递归求斐波那契序列 public int fibonacci1(int n) { if (n == 1 || n == 2) { return 1; } else { return fibonacci1(n - 1) + fibonacci1(n - 2); } } //由底向上 public long fibonacci2(int n) { //保存斐波那契序列 long fin[] = new long[n + 1]; fin[1] = 1; fin[2] = 1; for (int i = 3; i <= n; i++) { fin[i] = fin[i - 2] + fin[i - 1]; } return fin[n]; } public long fibonacci21(int n) { //只求最后一个 long a = 1; long b = 1; long c = 0; for (int i = 3; i <= n; i++) { c = a + b; a = b; b = c; } return c; }//使用矩阵乘法 public long fibonacci3(int n) { long fin[][] = {{1, 1}, {1, 0}}; long a[][] = {{1, 1}, {1, 0}}; long fin1[][] = {{1, 1}, {1, 0}}; long t; for (int k = 1; k < n; k++) {//控制a矩阵的阶乘数 for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { t = 0; for (int z = 0; z < 2; z++) { t = fin[i][z] * a[z][j] + t; } fin1[i][j] = t; } } //计算出来的fin1还要复制给fin for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { fin[i][j] = fin1[i][j]; } } } return fin[0][1]; } public static void main(String[] args) { Fibonacci fib = new Fibonacci(); //本来想测100的,天真了 45就3s时间,后面指数增长 long startTime = System.nanoTime(); // 获取开始时间 System.out.println(fib.fibonacci1(45)); long endTime = System.nanoTime(); // 获取结束时间 System.out.println("程序运行时间: " + (endTime - startTime) + "纳秒"); startTime = System.nanoTime(); // 获取开始时间 System.out.println(fib.fibonacci2(100)); endTime = System.nanoTime(); // 获取结束时间 System.out.println("程序运行时间: " + (endTime - startTime) + "纳秒"); //书上不是说用矩阵做效率是lgn吗?怎么做出来不一样 startTime = System.nanoTime(); // 获取开始时间 System.out.println(fib.fibonacci3(100)); endTime = System.nanoTime(); // 获取结束时间 System.out.println("程序运行时间: " + (endTime - startTime) + "纳秒"); startTime = System.nanoTime(); // 获取开始时间 System.out.println(fib.fibonacci21(100)); endTime = System.nanoTime(); // 获取结束时间 System.out.println("程序运行时间: " + (endTime - startTime) + "纳秒"); }}
矩阵乘法的斐波那契
矩阵计算斐波那契序列可能有点问题,但网上找的答案都没有自底向上快不知道怎么回事?
阅读全文
0 0
- 斐波那契序列-java
- 斐波那契序列
- 斐波那契序列
- 斐波那契序列
- 斐波那契序列
- 斐波那契序列
- 斐波那契序列
- 斐波那契序列
- 斐波那契序列(java版)
- java实现斐波那序列
- 斐波那契序列 集锦 (转)
- 斐波那契序列集锦(转)
- 斐波那契序列 集锦 (转)
- 斐波那契序列 集锦 (转)
- 斐波那契序列 集锦
- 斐波那契序列 集锦 (转)
- 斐波那契序列(数组)
- 斐波那契序列 集锦
- 2020年联网设备或超340亿台,为智能硬件企业提供检测服务会是个好生意么?
- Android Manifest merger failed with multiple errors,see logs
- Android 一个简单的登录界面(一)
- 魔幻冒险类VR游戏《无界术士》即将登陆Steam平台
- toString()、String.valueOf()、(String)的比较
- 斐波那契序列-java
- Protocol Buffer技术详解(语言规范)
- 解决 :android studio 提交代码到git/github失败 Could not read from remote repository
- WebAPI 后台调用 采用httpclient
- 一对一映射
- 二进制数位数扩展方法
- CSS——textarea多行文本框禁止拖动问题解决
- 限制textfiled输入字符长度
- Win 安装 lua 环境