当前位置: 首页 > 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://www.yayakq.cn/news/322136/

相关文章:

  • 南昌网站建设公司收费苏州网站建设工作室
  • 新开传奇网站曾劲松wordpress建电商网站
  • 外国做的福利小视频在线观看网站网络推广模板网站
  • 如何在阿里云自主建网站公司的服务器能建设网站吗
  • 网站建设确认单临沂制作手机网站
  • 昆明网站开发价格公司设计网页
  • 做摄影网站的目的是什么开源门户网站建设方案
  • 网站建设教程 零基础镇江网页
  • 中小企业做网站推广大连最繁华的区是哪个区
  • 写作网站原码大淘客平台怎么做分销网站
  • 临沂龙文网站建设建行官网个人银行
  • 湖南沙坪建设有限公司网站淘宝搜索关键词查询工具
  • 公司做网站 微信平台做网站的几个必要步骤
  • 柳州市城市建设局网站wordpress模板yunnut
  • 代做ppt网站哈尔滨网页设计公司
  • 个人工作室网站ftp媒体库wordpress
  • 专注律师微网站建设与律师微信营销6唯品会专门做特卖的网站
  • 网站栏目是什么网络工程师难学吗
  • wordpress站点切换为中文建立网站后期需要干嘛
  • 做网站文案策划步骤网站建设去哪里学
  • 北京开发网站中国手机网站
  • 电话营销怎么做网站搜索引擎优化
  • 怎么做个人网站的网站开发方面的文献
  • 网站建设的外国文献dede网站制作教程
  • tp5.1做的网站自个网站
  • 制作个人网站教程教程建设网站
  • 西安地区专业做网站公司wordpress论坛模板下载地址
  • 哈尔滨做网站哪里好wordpress后台编辑小工具
  • 最优惠的赣州网站建设农业网站平台建设方案
  • 微信 网站一个简单鲜花的html网页