3.递归函数的基本结构-灵析社区

英勇黄铜

3.1递归函数的基本结构

写出递归终止条件(易忽略)

首先写出递归终止条件,也就是先写出不能再拆分的子问题。有些朋友在初学的时候,会由于忘记编写递归终止条件而导致递归调用栈满。

将原问题拆分成为规模更小的子问题(重点)

这一步是编写递归函数的关键,如何拆分子问题是我们需要关注的重点。

将子问题的结果进行合并(难点)

有一些逻辑恰好是发生在递归函数调用返回以后,我们在这个时机还可以编写一些逻辑,使得我们求解原问题变得更加简单。我们在「递归函数的应用」章节会向大家介绍如何利用这个时机完成一些关键的逻辑。

3.2写好递归函数建议

学好「递归」和编写代码一样,需要经历一个先模仿、再学习、然后思考和练习的过程。在这里我们给出写好「递归」方法的建议:

  • 写好「递归」方法不是一朝一夕的事情,和学习所有的算法问题一样,我们需要通过大量的练习来理解写对「递归」方法的技巧和细节;
  • 「递归」方法与「分治思想」「减治思想」「深度优先遍历」「栈」有着千丝万缕的联系,在编写「递归」方法的同时,要有意识地思考它们之间的关系;
  • 如果一时半会不能理解「递归」函数的语义,我们建议在逻辑的关键部分编写打印输出语句,以理解递归函数的调用过程。

3.3总结

学习好递归的重要方法是:先模仿,再练习。其实绝大部分知识的学习都需要反复经历「模仿」和「练习」的步骤。然后才会有自己的思考和总结

下一节,我们将介绍递归函数在算法与数据结构中的应用,对递归函数的应用的深刻理解,有助于我们理解具体问题、设计具体算法。

阅读量:1523

点赞量:0

收藏量:0