算法 - 斐波那契数列

本文介绍了斐波那契数列的三种算法:指数算法、多项式算法和矩阵算法。指数算法通过递归实现,但效率低下;多项式算法利用循环保存中间结果,提高效率;矩阵算法结合矩阵快速幂,将操作次数优化到O(log n),为最高效的解决方案。文章提供了Java实现的代码示例。
摘要由CSDN通过智能技术生成

原文地址:http://duras.wang/blog/2016/03/18/algorithms01/ 

  斐波那契数列中每个数都是其两个直接前项的和,其生成规则如下所示:

Fn=Fn1+Fn210n>1n=1n=0
.

指数算法

  要求斐波那契数列的第n项值一种简单的方法就是使用递归

function fib(n)
if n=0: return 0;
if n=1: return 1;
return fib(n-1)+fib(n-2);

  但是使用递归来计算第n项,它消耗的资源是指数级增长的。如下图所示,一个fib(n)会触发一连串的递归操作,而这些操作中有很多步骤是重复的。因此,这个算法虽然正确,但是效率太低。
指数算法

多项式算法

  递归的方法对资源的消耗太大,更合理的方法是使用循环来完成,随时保存中间结果。

function fib(n)
if n=0: return 0;
create an array f[0…n]
f[0]=0,f[1]=1
for i=2…n:
 f[i]=f[i-1]+f[i-2]
return f[n]

矩阵算法

  首先,对于数列的初始条件对应以下的矩阵运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值