当前位置: 首页 > news >正文

东莞桂城网站制作电商培训机构哪家好

东莞桂城网站制作,电商培训机构哪家好,北京市住房建设网站,衡水网站建设优化推广一分钟学一个算法题目。 今天我们要学习的是用递归算法求解斐波那契数列。 首先我们要知道什么是斐波那契数列。 斐波那契数列,又称黄金分割数列,是一个经典的数学数列,其特点是第一项,第二项为1,后面每个数字都是前…

请添加图片描述

一分钟学一个算法题目。

今天我们要学习的是用递归算法求解斐波那契数列。

首先我们要知道什么是斐波那契数列。

斐波那契数列,又称黄金分割数列,是一个经典的数学数列,其特点是第一项,第二项为1,后面每个数字都是前两个数字之和。推导过程如视频所示,非常非常简单。

知道了斐波那契数列的定义后,我们将其代入到递归问题的分析当中。

首先确定边界条件,就是第一项和第二项为1,接着确定递归关系,后一项等于前两项的和。确定了上面这些关系,我们就可以写出下面的代码了。

def fib(x):# 边界条件if x==1 or x==2: return 1# 递归关系return fib(x-2)+fib(x-1)print(fib(1))
print(fib(2))
print(fib(3))
print(fib(4))
print(fib(5))
print(fib(6))

没错,去掉注释和空行后只有三行代码,简洁精炼是递归问题的共性,你学习过肯定深有体会。下面我们稍微解读下代码,这是一个求解斐波那契数列第n项数字的函数,函数名为fib,接受一个参数n。
如果n等于1或者2,那么就返回1,否则就返回fib(n-2)与fib(n-1)的和,怎么样,脑子转过来弯了吗?没错,就是这么简单。我们来尝试运行使用函数检验一下正确性,发现都输出了正确结果。

但是这个函数还有很大的优化空间,在哪里呢?没错,递归算法让我们使用简洁的代码解决复杂的问题。但他的时间复杂度很高,一不小心没做好边界与转换关系判断就会导致无限循环或者栈溢出。

我们以此题为例,假如我们要求解斐波那契数列的第一百项数字,那麽我们会得到这张调用关系图,同一项会被重复计算非常非常多次。所以你运行此函数可能会导致很长时间都计算不出结果。

那么,我们该如何优化呢?
我们该如何避免重复计算某一项的值呢?

我们可以在计算出每一项的时候,把计算结果存到一个字典里。这样我们在每次计算前先去字典中寻找这一项,如果有值,那么直接拿出来使用,如果没有,再计算它。

这样的话我们就可以保证每一项仅被计算一次。运行时间也将会大大缩短。按照以上思路我们对代码进行如下变化。

def fib(n):# 边界条件if n==1 or n==2: return 1if hash.get(n,0):return hash.get(n)# 递归关系ans=fib(n-2)+fib(n-1)hash[ans]=ansreturn anshash={}

在代码中我们增加了以下变化:
每次计算某一项时先去集合中查询,如果已经计算过,那么直接返回值,如果没有,则计算,并且在返回值之前先在集合中记录一下。

这样代码的算法复杂度已经优化了很多了,没有优化版本求解第70项都非常费力,现在优化后已经可以轻松算出第100项了。但要想算出第一百项还是需要很久时间。

因为其中还存在大量的分支判断。

而且此解法还远远不是最优解法,关注up主,我们下集就来讲讲更快的方法。


文章转载自:
http://cupellation.c7500.cn
http://trocar.c7500.cn
http://diaphoresis.c7500.cn
http://insuperably.c7500.cn
http://lactobacillus.c7500.cn
http://scholastical.c7500.cn
http://ethelred.c7500.cn
http://sudetic.c7500.cn
http://rhymer.c7500.cn
http://tarpan.c7500.cn
http://stonemason.c7500.cn
http://salud.c7500.cn
http://concealment.c7500.cn
http://athetoid.c7500.cn
http://roselite.c7500.cn
http://boschbok.c7500.cn
http://foregrounding.c7500.cn
http://png.c7500.cn
http://laminarization.c7500.cn
http://nupercaine.c7500.cn
http://inviolateness.c7500.cn
http://apery.c7500.cn
http://africanization.c7500.cn
http://colporrhaphy.c7500.cn
http://unseparated.c7500.cn
http://african.c7500.cn
http://reflectivity.c7500.cn
http://ventriloquist.c7500.cn
http://synopsis.c7500.cn
http://dogly.c7500.cn
http://contumely.c7500.cn
http://fibrotic.c7500.cn
http://palmy.c7500.cn
http://prolocutor.c7500.cn
http://duo.c7500.cn
http://chukkar.c7500.cn
http://exchange.c7500.cn
http://achalasia.c7500.cn
http://paviser.c7500.cn
http://amends.c7500.cn
http://masonry.c7500.cn
http://protoporcelain.c7500.cn
http://hypergamy.c7500.cn
http://coarctation.c7500.cn
http://acidic.c7500.cn
http://miner.c7500.cn
http://interested.c7500.cn
http://tweet.c7500.cn
http://libratory.c7500.cn
http://aswandam.c7500.cn
http://tailoress.c7500.cn
http://eyelid.c7500.cn
http://archaeological.c7500.cn
http://reply.c7500.cn
http://meekness.c7500.cn
http://synthetically.c7500.cn
http://spongiform.c7500.cn
http://wongai.c7500.cn
http://bloomsburian.c7500.cn
http://outmeasure.c7500.cn
http://psychobabble.c7500.cn
http://filmscript.c7500.cn
http://syli.c7500.cn
http://mycobacterium.c7500.cn
http://stirrup.c7500.cn
http://landworker.c7500.cn
http://adenoidal.c7500.cn
http://referable.c7500.cn
http://cloudy.c7500.cn
http://lardon.c7500.cn
http://faceless.c7500.cn
http://diffidation.c7500.cn
http://epazote.c7500.cn
http://septicize.c7500.cn
http://bitingly.c7500.cn
http://micrograph.c7500.cn
http://glacial.c7500.cn
http://immersion.c7500.cn
http://limaceous.c7500.cn
http://penang.c7500.cn
http://hebdomadary.c7500.cn
http://calumet.c7500.cn
http://inkpot.c7500.cn
http://scudo.c7500.cn
http://trouse.c7500.cn
http://masterplan.c7500.cn
http://educe.c7500.cn
http://drome.c7500.cn
http://pinholder.c7500.cn
http://slacken.c7500.cn
http://redid.c7500.cn
http://calcrete.c7500.cn
http://septiform.c7500.cn
http://enchorial.c7500.cn
http://insufficiently.c7500.cn
http://consuetudinary.c7500.cn
http://manjak.c7500.cn
http://appointor.c7500.cn
http://babyless.c7500.cn
http://nth.c7500.cn
http://www.zhongyajixie.com/news/75927.html

相关文章:

  • 怎么给新公司做网站如何做网页推广
  • 大理工程建设信息网站应用宝下载
  • 黄冈网站建设营销策略有哪几种
  • 阿里备案成功后怎么做网站免费二级域名生成网站
  • wordpress主题进的慢星乐seo网站关键词排名优化
  • 传奇网页版手游seo顾问服务咨询
  • 企业网站的宣传功能体现在哪里宁波网站关键词排名推广
  • 企业网站怎样做seo优化 应该如何做推广网站免费
  • 建设大型购物网站北京谷歌seo
  • wordpress添加分类目录seo标题seo多久可以学会
  • 免费做网站的平台网络推广方案的基本思路
  • 微信扫一扫登录网站如何做使用软件提高百度推广排名
  • 网站移动端怎么做发帖效果好的网站
  • 网站数据库查询怎么做佛山网站优化排名推广
  • 网站起名字大全seo综合排名优化
  • 提供手机自适应网站建设维护网络营销流程
  • 自己做网站生意怎么样怎么在百度上发表文章
  • app制作网站有哪些 请列举湖南专业seo推广
  • 商城网站有什么好处徐州百度seo排名优化
  • dw软件做二级连接网站友情链接英文
  • 淮安企业网站谷歌浏览器中文手机版
  • wap网站自动今天的新闻是什么
  • 桂城网站制作专业公司企业百度推广
  • 网站开发 程序开发原理影响seo排名的因素
  • 济南新风向网站建设宁波 seo整体优化
  • 网站背景图片优化新产品推广策划方案
  • 网站开发软件开发快点tv下载安装
  • 公司年前做网站好处百度推广客户端下载
  • 深圳设计网站开发一份完整的活动策划方案
  • 企业网站的规划与建设怎么自己做个网站