算法基础-递归
创始人
2024-06-03 10:51:26
0

什么是递归

简单说,递归就是函数自己调用自己,并在满足一定条件下返回的函数调用现象。

最简单的递归函数就是阶乘函数,factorial函数存在factorial(n-1),因此是递归函数。

public int factorial(int n) {if (n < = 1) {return 1;}return n * factorial(n - 1);
}

进一步剖析「递归」,先有「递」再有「归」,「递」的意思是将问题拆解成子问题来解决, 子问题再拆解成子子问题,...,直到被拆解的子问题无需再拆分成更细的子问题(即可以求解)。「归」是说最小的子问题解决了,那么它的上一层子问题也就解决了,上一层的子问题解决了,上上层子问题自然也就解决了,....,直到最开始的问题解决。文字说可能有点抽象,那我们就以阶层 f(6) 为例来看下它的「递」和「归」。

求解问题 f(6),由于 f(6) = n * f(5),所以 f(6) 需要拆解成 f(5) 子问题进行求解,同理 f(5) = n * f(4) ,也需要进一步拆分,... ,直到 f(1),这是「递」。f(1) 解决了,由于 f(2) = 2 f(1) = 2 也解决了,.... f(n)到最后也解决了,这是「归」。

所以递归的本质是能把问题拆分成具有相同解决思路的子问题,直到最后被拆解的子问题再也不能拆分,解决了最小粒度可求解的子问题后,在「归」的过程中自然顺其自然地解决了最开始的问题。

递归算法通用解决思路

我们在上一节仔细剖析了什么是递归,可以发现递归有以下两个特点:

  1. 一个问题可以分解成具有相同解决思路的子问题,子子问题,换句话说这些问题都能调用同一个函数。
  2. 经过层层分解的子问题最后一定是有一个不能再分解的固定值的(即终止条件),如果没有的话,就无穷无尽地分解子问题了,问题显然是无解的。

所以解递归题的关键在于我们首先需要根据以上递归的两个特点判断题目是否可以用递归来解。

经过判断可以用递归后,接下来我们就来看看用递归解题的基本套路(四步曲):

  1. 先定义一个函数,明确这个函数的功能,由于递归的特点是问题和子问题都会调用函数自身,所以这个函数的功能一旦确定了, 之后只要找寻问题与子问题的递归关系即可。
  2. 接下来寻找问题与子问题间的关系(即递推公式),这样由于问题与子问题具有相同解决思路,只要子问题调用步骤 1 定义好的函数,问题即可解决。所谓的关系最好能用一个公式表示出来,比如 f(n) = n * f(n-) 这样,如果暂时无法得出明确的公式,用伪代码表示也是可以的,发现递推关系后,要寻找最终不可再分解的子问题的解,即(临界条件),确保子问题不会无限分解下去。由于第一步我们已经定义了这个函数的功能,所以当问题拆分成子问题时,子问题可以调用步骤 1 定义的函数,符合递归的条件(函数里调用自身)。
  3. 将第二步的递推公式用代码表示出来补充到步骤 1 定义的函数中。
  4. 最后也是很关键的一步,根据问题与子问题的关系,推导出时间复杂度,如果发现递归时间复杂度不可接受,则需转换思路对其进行改造,看下是否有更靠谱的解法。

相关内容

热门资讯

初一自我介绍作文500字【精... 篇一:初一自我介绍作文500字大家好,我是初一(X)班的学生,今天很高兴能够在这里向大家进行自我介绍...
植物作文300字【精选6篇】 植物作文300字 篇一:植物的生命奇迹植物是地球上最为庞大和多样化的生命形式之一。它们以其独特的生命...
成长的烦恼初中作文(优质3篇... 成长的烦恼初中作文 篇一初中生活是我们人生中重要的一个阶段,这个阶段我们不仅要面对学习的压力,还要面...
米拉神奇历险记初一作文【优选... 米拉神奇历险记初一作文 篇一《米拉神奇历险记》是我最喜欢的一部动画片。它讲述了一只勇敢的小狗米拉在寻...
初中作文【精选6篇】 初中作文 篇一:我的暑假计划初中作文 篇二:如何提高英语口语水平初中作文 篇三作文二内容:在我的心中...
桃花源600字初一作文【最新... 桃花源600字初一作文 篇一迷失的桃花源桃花源,是一个神秘的地方,它位于偏远的山谷之中,被高山环绕,...
初一感恩作文800字(优秀6... 初一感恩作文800字 篇一感恩父母初一了,我终于踏入了中学的大门,开始了新的学习生活。回首这一路走来...
初三化学月考反思【优秀3篇】 初三化学月考反思 篇一这次的初三化学月考让我深刻地认识到了自己在学习上的不足之处。首先,在知识掌握方...
初中作文(经典6篇) 初中作文篇一勇敢面对困难人生就像一场没有硝烟的战争,我们时常会面临各种各样的困难和挑战。有的人在面对...
初中优秀作文600字【实用6... 初中优秀作文600字 篇一: 人生的道路人生是一条漫长而曲折的道路,这条道路上充满了无数的选择和困惑...
论美_初三作文_初三作文【优... 篇一:探究美的定义美是一个广泛而抽象的概念,它可以用来形容事物的外貌、内涵和情感。然而,美的定义因人...
暮春樱花落初一作文(优质5篇... 暮春樱花落初一作文 篇一樱花盛开的季节总是让人心动不已。暮春的时候,我和家人一起去了一趟著名的樱花园...
啊原来如此600字初三作文【... 啊原来如此600字初三作文 篇一啊原来如此最近,我读到了一本关于大自然的书,里面介绍了很多有趣的事情...
我什么的妈妈作文初三(实用6... 我什么的妈妈作文初三 篇一我什么的妈妈我的妈妈是一位非常特别的人,她是我生命中最重要的人物之一。我常...
关于初三生活800字记叙文(... 关于初三生活800字记叙文 篇一初三生活的不同初三生活是我人生中的一段特殊时光,充满了挑战与压力,但...
初三学生作文(通用6篇) 初三学生作文 篇一:我的理想职业作为一名初三学生,我对未来的职业选择有着浓厚的兴趣和思考。在我眼中,...
英语初三80词范文【优质6篇... 英语初三80词范文 篇一:My Favorite HobbyHobbies are a great ...
家乡的年味初三作文【优选3篇... 家乡的年味初三作文 篇一家乡的年味初三作文初三的早晨,阳光透过窗户洒进来,照亮了整个房间。我迷迷糊糊...
初三作文难忘的军训【通用6篇... 初三作文难忘的军训 篇一军训是我初中生活中最难忘的经历之一。那段时间,我在学校进行了为期两周的军事训...
一路书香,一路成长初三作文【... 一路书香,一路成长初三作文 篇一:阅读的力量阅读是一种强大的力量,它伴随着我从小学到初中的成长。一路...