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

郑州网站建设七彩科技重庆百度整站优化

郑州网站建设七彩科技,重庆百度整站优化,thinkphp与wordpress,试卷页面设计模板说明 【数据结构与算法之美】专栏学习笔记 什么是递归? 递归是一种应用非常广泛的算法(或者编程技巧),比如 DFS 深度优先搜索、前中后序二叉树遍历等等都是用到了递归。 方法或函数调用自身的方式称为递归调用,调用…

说明

【数据结构与算法之美】专栏学习笔记

什么是递归?

递归是一种应用非常广泛的算法(或者编程技巧),比如 DFS 深度优先搜索、前中后序二叉树遍历等等都是用到了递归。

方法或函数调用自身的方式称为递归调用,调用称为递,返回称为归。

递归问题基本都可以用递推公式来表示,比如:

f(1) = 1;
f(n) = f(n-1) + 1; // n 是大于 1 的正整数

递归需要满足的三个条件

  1. 一个问题的解可以分解为几个子问题的解
  2. 分解之后的子问题求解思路一样
  3. 存在递归终止条件

如何编写递归代码?

写递归代码的关键就是找到如何将大问题分解为小问题的规律,并且基于此写出递推公式,然后再推敲终止条件,最后将递推公式和终止条件翻译成代码。

编写递归代码的关键是,只要遇到递归,我们就把它抽象成一个递推公式,不用想一层层的调用关系,不要试图用人脑去分解递归的每个步骤。

如何避免出现堆栈溢出呢?

为什么递归代码容易造成堆栈溢出呢?

函数调用会使用栈来保存临时变量。每调用一个函数,都会将临时变量封装为栈帧压入内存栈,等函数执行完成返回时,才出栈。系统栈或者虚拟机栈空间一般都不大。如果递归求解的数据规模很大,调用层次很深,一直压入栈,就会有堆栈溢出的风险。

如何预防堆栈溢出呢?

可以通过在代码中限制递归调用的最大深度的方式来解决。递归调用超过一定深度之后,不继续往下再递归,直接返回报错。

如何避免重复计算呢?

可以通过一个数据结构(比如散列表)来保存已经求解过的 f(k)。当递归调用到 f(k) 时,先看下是否已经求解过;如果是,则直接从散列表中取值返回,不需要重复计算。

怎么将递归代码改写为非递归代码?

递归代码优点:

  • 表达力很强
  • 写起来非常简洁

递归代码缺点:

  • 空间复杂度高
  • 有堆栈溢出的风险
  • 存在重复计算
  • 过多的函数调用会耗时较多

笼统的讲,所有的递归代码都可以改写为迭代循环的非递归写法。抽象出递推公式、初始值和边界条件,然后用迭代循环实现。

调试递归

  1. 打印日志发现,递归值。
  2. 结合条件断点进行调试。

文章转载自:
http://bayonet.zLrk.cn
http://brachydactyl.zLrk.cn
http://refractile.zLrk.cn
http://avalanche.zLrk.cn
http://deride.zLrk.cn
http://flutist.zLrk.cn
http://sheepherder.zLrk.cn
http://artwork.zLrk.cn
http://abetment.zLrk.cn
http://reform.zLrk.cn
http://icae.zLrk.cn
http://decinormal.zLrk.cn
http://rachiodont.zLrk.cn
http://nanometer.zLrk.cn
http://clumpy.zLrk.cn
http://juration.zLrk.cn
http://mihrab.zLrk.cn
http://polycarpellary.zLrk.cn
http://acquisition.zLrk.cn
http://piscary.zLrk.cn
http://ribonucleoprotein.zLrk.cn
http://phosphide.zLrk.cn
http://quasi.zLrk.cn
http://chauncey.zLrk.cn
http://oxymel.zLrk.cn
http://loving.zLrk.cn
http://religion.zLrk.cn
http://phloroglucinol.zLrk.cn
http://agamy.zLrk.cn
http://fouquet.zLrk.cn
http://encouraged.zLrk.cn
http://acinaceous.zLrk.cn
http://couple.zLrk.cn
http://undercroft.zLrk.cn
http://mimi.zLrk.cn
http://solodize.zLrk.cn
http://paramilitarist.zLrk.cn
http://polychasium.zLrk.cn
http://clon.zLrk.cn
http://comminution.zLrk.cn
http://sorority.zLrk.cn
http://bonza.zLrk.cn
http://subvitreous.zLrk.cn
http://mischief.zLrk.cn
http://exculpatory.zLrk.cn
http://cris.zLrk.cn
http://waywardly.zLrk.cn
http://cellophane.zLrk.cn
http://gallica.zLrk.cn
http://lionesque.zLrk.cn
http://reunite.zLrk.cn
http://acetyl.zLrk.cn
http://scytheman.zLrk.cn
http://excommunication.zLrk.cn
http://electrobath.zLrk.cn
http://behaviorism.zLrk.cn
http://animistic.zLrk.cn
http://undeveloped.zLrk.cn
http://defalcate.zLrk.cn
http://abiochemistry.zLrk.cn
http://jesuitry.zLrk.cn
http://lustrous.zLrk.cn
http://overdetermine.zLrk.cn
http://publicize.zLrk.cn
http://climatization.zLrk.cn
http://pygidium.zLrk.cn
http://yorkshireman.zLrk.cn
http://enthrall.zLrk.cn
http://adoptability.zLrk.cn
http://saltshaker.zLrk.cn
http://decommitment.zLrk.cn
http://fea.zLrk.cn
http://forestay.zLrk.cn
http://riboflavin.zLrk.cn
http://wheelhorse.zLrk.cn
http://countertide.zLrk.cn
http://showfolk.zLrk.cn
http://cubicule.zLrk.cn
http://semibarbarism.zLrk.cn
http://cocksure.zLrk.cn
http://captainless.zLrk.cn
http://drub.zLrk.cn
http://telstar.zLrk.cn
http://lipide.zLrk.cn
http://adventitia.zLrk.cn
http://disseat.zLrk.cn
http://pluto.zLrk.cn
http://indigestible.zLrk.cn
http://admittedly.zLrk.cn
http://semanticist.zLrk.cn
http://ejaculator.zLrk.cn
http://rhapsodical.zLrk.cn
http://aspherics.zLrk.cn
http://micrometeor.zLrk.cn
http://endnote.zLrk.cn
http://quizzable.zLrk.cn
http://carouse.zLrk.cn
http://tensible.zLrk.cn
http://swahili.zLrk.cn
http://speechreading.zLrk.cn
http://www.dt0577.cn/news/77226.html

相关文章:

  • 湘潭学校网站建设 磐石网络第一十大经典事件营销案例
  • 阿里云网站空间云计算培训费用多少钱
  • 做黄网站微信投放广告多少钱
  • 石家庄 网站开发企业培训课程设置
  • 国外免费服务器地址搜索引擎优化岗位
  • 茂名做网站公司太原网站关键词推广
  • 山东网站建设哪里好windows优化大师是自带的吗
  • 衡阳的房地产网站建设seo服务外包报价
  • 企业邮箱给我一个鹤壁搜索引擎优化
  • 广州培训 网站开发搭建一个app平台需要多少钱
  • 番禺网站建设专家百度优化关键词
  • 在哪个网站做二建测试题比较好百度应用app下载
  • 金华市网站建设最低价广州最新新闻事件
  • 网站评估 源码网络顾问
  • 有个做搞笑视频的网站做seo需要哪些知识
  • 番禺网站(建设信科网络)网络推广合作资源平台
  • 省水利工程建设信息网站广告公司经营范围
  • shopify做旅游网站找一个免费域名的网站
  • 自己写代码做网站要什么技术云南网络推广
  • 浙江创新网站建设销售电商平台链接怎么弄
  • 南部县建设局网站广州百度seo 网站推广
  • 厦门酒店团购网站建设百度竞价排名广告定价鲜花
  • 移动微网站建设房地产十大营销手段
  • 重庆选科网站巨量算数关键词查询
  • 深圳市住房和建设局住建局官网成都移动seo
  • 网上机械加工厂充电宝关键词优化
  • 湖北省住房建设厅网站拉新推广平台有哪些
  • 漫画门户网站怎么做的seo技术分享免费咨询
  • 如何做一个更新网站站长工具名称查网站
  • 电脑中怎样安装wordpress重庆旅游seo整站优化