博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
斐波那契的四种求法
阅读量:7124 次
发布时间:2019-06-28

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

首先看一下斐波那契的矩阵表示:

数列的递推公式为:f(1)=1,f(2)=2,f(n)=f(n-1)+f(n-2)(n>=3)

   用矩阵表示为:

  进一步,可以得出直接推导公式:

 

#include
#include
#include
#include
#include
#include
#define N 1000using namespace std;int f[N]; int fibonacci_1(int n){//递归 if(n==1 || n==0) return 1; return fibonacci_1(n-1) + fibonacci_1(n-2);}int fibonacci_2(int n){//递推 f[0] = f[1] = 1; for(int i=2; i<=n; ++i) f[i] = f[i-1] + f[i-2]; return f[n];}int fibonacci_3(int n){//非递归 int f1=1, f2=1, f3; for(int i=2; i<=n; ++i){ f3 = f1+f2; f2 = f1; f1 = f3; } return f1;}struct Fibonacci{ int a11, a12, a21, a22; Fibonacci(){ } Fibonacci(int a1, int a2, int a3, int a4){ a11 = a1; a22 = a2; a21 = a3; a22 = a4; } Fibonacci operator *(Fibonacci x){ Fibonacci* tmp = new Fibonacci(); tmp->a11 = a11*x.a11 + a21*x.a21; tmp->a12 = a11*x.a12 + a21*x.a22; tmp->a21 = a21*x.a11 + a22*x.a21; tmp->a22 = a21*x.a21 + a22*x.a22; return *tmp; }};int fibonacci_4(int n){//矩阵 + 快速幂方法 Fibonacci a(1, 1, 1, 0); Fibonacci ans(1, 0, 0, 1); while(n){ //快速幂方法 if(n&1) ans = ans*a; a=a*a; n>>=1; } return ans.a11;}int main(){ int n; cin>>n; cout<<"fibonacci_1: "<
<
本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/4808912.html,如需转载请自行联系原作者
你可能感兴趣的文章
用Python实现用户登录接口
查看>>
毕业前1个月的想法
查看>>
例程详析动态链接库
查看>>
geopy使用详解
查看>>
Notebook Workflows: The Easiest Way to Implement Apache Spark Pipelines
查看>>
mysql必知必会表样例
查看>>
我的友情链接
查看>>
python logging 模块在windows报错ConfigParser.NoSectionError: No section
查看>>
windows下python3虚拟环境搭建
查看>>
error at ::0 formal unbound in pointcut
查看>>
关于linux下Squid透明代理的试验
查看>>
马哥2016全新Linux+Python高端运维班第四期-第三次作业
查看>>
AngularJS基础语法
查看>>
程序编译过程
查看>>
《Linux学习并不难》归档和压缩(2):tar包的使用和管理
查看>>
cookie与session详解
查看>>
自定义destoon6.0的地址生成规则
查看>>
ELK之搜索引擎介绍(一)
查看>>
一键 安装lamp+lnmp+ftp+Tomcat任意选择5分钟起飞
查看>>
DNS服务器原理以及搭建主-辅DNS服务器操作指南
查看>>