Fibonacci 实现的3种方法
来源:互联网 发布:如何淘宝 买高仿包 编辑:程序博客网 时间:2024/06/15 22:19
斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……
定义如下:
第一种方法:
在当初第一次接触递归的时候,例子就是Fibonacci数的计算。实现代码如下:
long long fibonacci1(int n){if(0==n||1==n)return n;elsereturn fibonacci1(n-1)+fibonacci1(n-2);}
第二种方法:
通过使用两个额外的空间换取时间的方法来改善第一种方法。实现代码如下:
long long fibonacci2(int n){long long result=0;long long fn_1,fn_2;fn_1=0;fn_2=1;if(0==n||1==n)return n;else{for(int i=1;i<n;i++){result=fn_1+fn_2;fn_1=fn_2;fn_2=result;}}return result;}
第三种方法:
根据矩阵的乘法
实现代码如下:
//矩阵结构体struct Matrix2_2{Matrix2_2(long long m00=0,long long m01=0,long long m10=0,long long m11=0):m_00(m00),m_01(m01),m_10(m10),m_11(m11){}long long m_00;long long m_01;long long m_10;long long m_11;};
//矩阵相乘Matrix2_2 MatrixMultiply(const Matrix2_2 &matrix1,const Matrix2_2 &matrix2){return Matrix2_2(matrix1.m_00*matrix2.m_00+matrix1.m_01*matrix2.m_10,matrix1.m_00*matrix2.m_01+matrix1.m_01*matrix2.m_11,matrix1.m_10*matrix2.m_00+matrix1.m_11*matrix2.m_10,matrix1.m_10*matrix2.m_01+matrix1.m_11*matrix2.m_11);}
//求{1,1,1,0}^(n-1)的矩阵Matrix2_2 MatrixPower(int n){assert(n>0);Matrix2_2 matrix;if(1==n)matrix=Matrix2_2(1,1,1,0);else if(0==n%2){matrix=MatrixPower(n/2);matrix=MatrixMultiply(matrix,matrix);}else if(1==n%2){matrix=MatrixPower((n-1)/2);matrix=MatrixMultiply(matrix,matrix);matrix=MatrixMultiply(matrix,Matrix2_2(1,1,1,0));}return matrix;}
long long fibonacci3(int n){if(0==n||1==n)return n;Matrix2_2 matrix=MatrixPower(n-1);return matrix.m_00;}
0 0
- Fibonacci 实现的3种方法
- Fibonacci数列实现的几种方法(java实现)
- Fibonacci数列几种不同的编程实现方法
- fibonacci的几种实现
- 求Fibonacci数的几种方法
- 求斐波那契(Fibonacci)数列通项的七种实现方法
- 求斐波那契(Fibonacci)数列通项的七种实现方法
- 求斐波那契(Fibonacci)数列通项的七种实现方法
- Fibonacci六种实现方式的比较
- fibonacci数列的不同实现方法对比(java)
- Fibonacci数列的实现
- Fibonacci数列的实现
- 关于Fibonacci的实现
- 类方法,实例方法(Fibonacci实现)
- 计算Fibonacci数列第n项的第8种方法(数学推导与Python实现)
- Fibonacci的尾递归实现
- Fibonacci法的matlab实现
- 求Fibonacci数的几种方法[转载]
- hadoop单线程实现server多socket连接读取数据原理分析
- Hadoop入门--HDFS(单节点)配置和部署 (一)
- spring
- table一些重要细节问题
- 机器学习算法与Python实践之(二)支持向量机(SVM)初级
- Fibonacci 实现的3种方法
- SHAutoComplete
- <dl>definition list定义列表 - <dt>definition term定义项 - <dd>definition description定义描述
- VS中自定义C#快速简写代码
- 各种排序比较
- Project facet Java version 1.7 is not support
- ffmpeg常见结构体说明
- Ajax (5) --- Json
- 判断窗口是否在最大化状态和最小化状态