博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
斐波那契问题(java)
阅读量:4709 次
发布时间:2019-06-10

本文共 1570 字,大约阅读时间需要 5 分钟。

F(n)=F(n-1)+F(n-2)

1.迭代实现,O(2的N次方)

1 /** 2      * 斐波那契 迭代实现 3      * @param n 4      * @return 5      */ 6     public int Fabonacci_1(int n){ 7         if(n<0)return 0; 8         if(n==1||n==2) return 1; 9         return Fabonacci_1(n-1)+Fabonacci_1(n-2);10     }

 

2.递归实现,O(N)

1 /** 2      * 斐波那契 递归实现 3      * @param n 4      * @return 5      */ 6     public int Fabonacci_2(int n){ 7         if(n<0)return 0; 8         if(n==1||n==2) return 1; 9         int res = 1,pre=1,temp=0;10         for(int i=3;i<=n;i++){11             temp = res;12             res = res+pre;13             pre = temp;14         }15         return res;16     }

3.使用二阶矩阵实现,O(logN)

1 /** 2      * 斐波那契 二阶矩阵实现 3      * @param n 4      * @return 5      */ 6     public int Fabonacci_3(int n){ 7         if(n<0)return 0; 8         if(n==1||n==2) return 1; 9         int[][] base={
{1,1},{1,0}};10 int[][] res = matrixPower(base, n-2);11 return res[0][0]+res[1][0];12 }13 14 //使用二阶矩阵求 斐波那契15 16 public int[][] matrixPower(int[][] m,int p){17 int[][] res = new int[m.length][m[0].length];18 //设置res为单位矩阵19 for(int i=0;i
>=1){25 if((p&1)!=0){26 muliMatrix(res, temp);27 }28 muliMatrix(temp, temp);29 30 }31 return res;32 }33 34 35 //2个矩阵相乘36 public int[][] muliMatrix(int[][] m1,int[][] m2){37 int[][] res = new int[m1.length][m2[0].length];38 for(int i=0;i

 

转载于:https://www.cnblogs.com/b-dong/p/6417075.html

你可能感兴趣的文章
Recursion
查看>>
66. Plus One
查看>>
COMP30023 Computer Systems 2019
查看>>
CSS选择器分类
查看>>
Kali学习笔记39:SQL手工注入(1)
查看>>
C# MD5加密
查看>>
Codeforces Round #329 (Div. 2)D LCA+并查集路径压缩
查看>>
移动应用开发测试工具Bugtags集成和使用教程
查看>>
Java GC、新生代、老年代
查看>>
Liferay 6.2 改造系列之十一:默认关闭CDN动态资源
查看>>
多线程
查看>>
折线切割平面
查看>>
获取当前路径下的所有文件路径 :listFiles
查看>>
图像形态学及更通用的形态学的原理及细节汇总
查看>>
linux开启coredump的3种方法
查看>>
数据驱动之 python + requests + Excel
查看>>
小鸡啄米问题求解
查看>>
Castle.net
查看>>
HDU1532 网络流最大流【EK算法】(模板题)
查看>>
PHP使用curl替代file_get_contents
查看>>