应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

一文精通递归算法

  一、什么是递归?
  自己调用自己,当业务逻辑符合以下三个条件的时候,就可以考虑使用递归来实现。一个问题可以分解为多个子问题;当前问题与其子问题除了数据规模不同外,求解思路完全一样;存在递归终止条件;二、为什么要使用递归?
  理论上,任何递归代码都可以使用非递归的方式进行实现,那么为什么还要使用递归呢?
  递归求解本质上是使用系统提供的栈来实现的,由系统为我们自动递归求解;如果改成非递归的方式,那么我们其实就是在手动递归,本质上这两种方式没有任何区别。但是相同的逻辑,两份代码,递归实现明显更加地简洁,更加有利系统的维护。三、如何使用递归?
  我们以一个实际的例子来演示如何使用递归。
  假设,有n个台阶,我们一步可以跨一个台阶,也可以一步跨两个台阶,那么这n个台阶总共有多少种跨法?
  我们按照递归使用的三个条件来分析下:是否可以分解为子问题?是的,我们跨上第n阶台阶时,要么是一步一个跨上去的,要么就是一步两个跨上去的,所以问题就分解为跨上n1个台阶有多少种跨法跨上n2个台阶有多少种跨法,递推公式可以表示为f(n)f(n1)f(n2);当前问题和子问题的求解思路是否一样?是的是否存在终止条件?是的,当n为1的时候,就一种跨法,当n为2的时候有两种跨法,当n为3或者4的时候,可以拆解为子问题,所以终止条件就是f(1)1,f(2)2;
  分析完之后,我们就得到了带终止条件的递推公式,再转换为代码即可:intcountSteps(intn){if(n1){return1;}if(n2){return2;}returnf(n1)f(n2);}
  递归的求解过程确实很难一下子就理解清楚,这是由于我们人脑的机制造成的,谁都会感觉这样。
  我们应该假设子问题f(n1)和f(n2)已经得到求解,然后在此基础上去求解当前的问题f(n),得到一个递推公式,如此只思考两层之间的关联关系会简单很多,千万不要试图去分解和理解每个递归层次的过程。四、使用递归需要注意什么?4。1堆栈溢出
  当递归调用深度过深的时候,就很容易出现栈溢出的问题,此时最好的方法就是根据业务场景逻辑和JVM的栈大小确定一个合理的最大递归深度,当超过该深度值的时候,程序抛出异常;4。2重复计算
  子问题的子问题可能会出现重复的问题,比如f(6)f(5)f(4),其中,f(5)和f(4)都会有子问题f(3),那么f(3)应该是不需要重复计算的。
  我们可以将求解过的问题结果保存到散列表中,当递归调用执行时,先检查该问题是否已经求解过了,如果是那么直接从散列表中获取结果返回即可,只有没有求解过的问题,才继续递归调用;intcountSteps(intn){if(n1){return1;}if(n2){return2;}先从散列表中检查是否已经对f(n)求解过了if(resultMap。get(n)!null){returnresultMap。get(n);}intresultf(n1)f(n2);将当前问题f(n)结果保存到散列表resultMap。put(n,result);returnresult;}4。3时空复杂度
  空间复杂度方面,因为递归深度决定着栈的使用程度,所以空间复杂度为O(n);
  时间复杂度上面,虽然入栈和出栈都是O(1),但是如果递归深度较大的话,函数上下文切换等造成的时间开销也会比较可观;4。4递归环
  有时候,可能由于脏数据的问题,会导致递归环的存在,比如在找原始推荐人的时候,A推荐了B,B推荐了C,C推荐了D,然后有一条脏数据,导致A的推荐人是D,那么在递归寻找原始推荐人的时候,就会陷入环中,可以设置一个最大递归深度来解决这个问题。

大唐荔乡浮山胜景吴子任清晨,我们从高州市区驱车,往东南方向行驶,往大唐荔乡根子镇浮山岭进发。一路上翻山过村,每一处都是一座深厚的历史宝藏。浮山岭顶峰海拔966米。因顶上五个小山峰极……世界知名歌手官宣怀孕!曾自曝流产1月7日,英国流行女歌手、天后JessieJ(结石姐)在社交平台上官宣怀孕喜讯,并高兴的晒出孕肚照,从照片中能明显看出她非常的幸福,而她怀孕的消息也是登上热搜,引来无数网友的热……新春送礼攻略来袭逛京东年货节为TA以旧换新手机享至高1400春节已进入倒计时,为亲友准备年礼的工作要尽早提上日程。一直以来,拜年送礼都是值得深思熟虑的一件事,既要兼顾礼物的温度与厚度,让亲友感受到满满心意,更要实用和创新兼得,让年礼独具……未完待续丨2022,张近东的退与进2022年年中,苏宁易购(002024。SZ)失去苏宁,成为ST易购。连续亏损、债务缠身的苏宁易购逐渐逼近退市红线,在不少人眼中是意料中事。红星资本局注意到,苏宁创……青春期快速增长阶段,这些表现家长要注意,抓住了孩子长得快镜子一个人的身体快速发育大致分成了三个阶段,其中,青春期是最后一个需要紧紧把握住的机会,一旦错过,孩子就再也没有长高个的可能性了。所以,作为家长我们有责任掌握关于孩子青春……溯源诚文化的时代表达,构筑我爱我家商业底色对于房产经纪这一行当来说,过去三年,是充满不确定性的三年。疫情的反复,政策的调整,楼市的低迷,导致交易量下滑和从业者流失成为普遍现象。在这样急遽、猛烈的变革期,房产经纪机构的出……你要的化妆品福田中央大街都有,我们一起嗨起来从位于福田中央商务区的卓悦中心中央大街到深业上城福田区促消费好戏连台今天,小福带你去卓悦中心中央大街这里的化妆品国际大牌满减秀出精彩……否极泰来,稍安勿躁当下时下,有人因国民难以为继呼吁躺平,有人惊疫情重呼唤封禁。吾以为,无论是躺平也好,封禁也罢。其实,都不是问题最关键的点,最关键的是对待此事的处事之逻辑。我泱……全面禁止多家国内企业在美国销售,中兴表示几乎没有影响从古至今,中国一直以来都讲究工匠精神的传承,无论是哪一个行业,都在技术上做到了精益求精。时代发展下的今天,科技发展已经成为了国家发展的重中之重,经过多年的努力,一些实力派厂商已……你还在相信淋巴按摩有奇效吗?上次扒了排毒理论,引起了大家的共鸣。其实早在2013年,美国《新科学家》网站盘点的六大健康迷信,排毒理论就名列其中。今天要讲一个更加具有迷惑性的养生套路淋巴按摩。近……交控科技研究报告国内轨交信号系统龙头,持续创新引领行业发展(报告出品方作者:申万宏源研究)1、轨交信号系统龙头,首家掌握自主CTBC技术1。1、轨交信号解决方案领跑者国内首家掌握自主化CBTC核心技术的轨交信号系统总承包商……安以轩接连错过汪小菲和李承铉,没想到最后却嫁了个黑社会文阅栀编辑阅栀2010年,汪小菲和大S闪婚,紧随而来的是大S对好姐妹横刀夺爱的小道消息。面对媒体的追问,夺爱事件中的另一个主角安以轩说道:我不知道她(大S)最……
刚抢完医保,公积金又被惦记上了,咱们老百姓还能剩点啥?最近,不少城市的居民们再次被公积金政策所困扰。在一些地区,公积金的缴存比例已经开始上调,这意味着员工的收入将会减少。而在此之前,许多人还刚刚抢完医保。随着各种社会保险和公……戴伟浚无法获得自由身原因曝光,申花欲用深足拖欠费用将其拿下戴伟浚铁心要离开申花这已经不是秘密,不过深足也因为和戴伟浚此前闹掰,拒绝放戴伟浚离队。根据媒体人文莉的报道,申花之所以有强烈的欲望引进戴伟浚,是因为深足到目前为止还拖欠申花千万……10件胎儿最害怕的事情,孕妈千万不要做,最后一件最重要10件胎儿最害怕的事,最后一件最重要!孕妈注意!10件胎儿在肚子里面害怕的事!孕妈妈们要注意了!第1个月怕热孕妈们要注意了,不要感冒发烧,洗澡水不要过热。第2……中标562。8亿!中国建筑重大项目公告近日,中国建筑股份有限公司链接发布重大项目公告(中标金额在20亿元以上),近期共计签约15个项目,合计金额为562。8亿元。具体的项目清单如下:表格中统计的重大项目主要分……那些拥有多结局的经典游戏,当大魔头走邪恶路线才符合人性很多游戏都设计了多重结局,一般包含:好结局、坏结局,以及不好不坏的结局。玩家们在没有攻略的情况下,最容易打出来的往往都是默认结局,不会太好。在有攻略的情况下,玩家小心翼翼……两会Chat丨幼儿入园年龄降到2岁可行吗?专家最好推进托幼一全国政协委员陈小艳《中国日报》视频截图2023全国两会期间,全国政协委员陈小艳在接受媒体采访时表示,建议出台相关评估标准,在孩子能够基本自理的情况下,降低幼儿园入园年龄到……小个子别再披头散发了!这7款春日发型太撩了!显高显脸小!头条创作挑战赛春日穿搭给大家安排了,发型自然不能落下而且我发现,现在大家对发型的要求除了要好看,最重要还得显脸小,也就是能实现头包脸效果。说到这,就不得不给大……突发上海科技馆母女坠楼事件!悲痛!2023年3月10日突发,上海科技馆母女坠楼。婆婆妈妈孩子,据了解三人是来上海旅游的,所以带孩子到上海科技馆参观,玩累了坐在科技馆的椅子上休息,小孩子本身就喜欢乱跑乱动的玩,正……西安和郑州哪座城市更有发展潜力?人工智能写了一篇1500字的根据一句话的描述,ChatGPT自动撰写文章以下是基于ChatGPT技术自动生成的文章正文:随着中国经济的高速增长,越来越多的城市开始脱颖而出,成为了各自地区的经济……数字农业农村方案智慧农业大数据顶层设计及智慧应用建设方案原文《数字农业农村方案:智慧农业大数据顶层设计及智慧应用分步实施方案》共97页PPT格式。更多参考公众号:优享智库数据资源中心建设制定XX省农业农村数据标准,基于G……霍华德1713戴维斯1310云豹不敌海神遭遇10连败直播吧1月15日讯霍华德效力的桃源云豹迎来和高雄海神今日迎来一场交手,云豹在引进霍华德后声名大噪,然而他的加盟也没办法改变球队,云豹目前遭遇9连败以1胜10负的战绩排名垫底,上……成都共享单车自律联盟已将23名多次乱停乱放用户纳入禁止用车黑封面新闻记者蔡世奇近日,记者从成都市共享单车行业自律联盟了解到,滴滴青桔、美团单车、哈啰单车三家联盟成员企业已将23名多次乱停乱放的用户纳入联合限制措施名单,黑名单用户被……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网