如何写好递归

一、为什么要用递归

采用递归编写程序能使程序变得简洁和清晰.可能需要很多步骤才能解出来的题目,用递归一行代码就能解决.

一、递归三步曲

  • 1、找到递归的终止条件:递归应该在什么时候结束?

  • 2、找到返回值:应该给上一级返回什么信息?

  • 3、本级递归应该做什么:在这一级递归中应该完成什么任务?

二、递归的例子

1、求二叉树的最大深度

看leetcode104题:求二叉树的最大深度 直接套用递归三部曲:

  • 1、找终止条件:当树为空,树的深度就为0,此时递归就结束了.

  • 2、找到返回值:应该返回什么?题目要求我们返回树的最大深度,最大深度必定出现在左子树或右子树中.那么返回值就应该是当前树的最大深度.

  • 3、本级递归应该做什么:首先,还是强调要走出之前的思维误区,递归后我们眼里的树一定是这个样子的,看下图。此时就三个节点:root、root.left、root.right,其中根据第二步,root.left和root.right分别记录的是root的左右子树的最大深度。那么本级递归应该做什么就很明确了,自然就是在root的左右子树中选择较大的一个,再加上1就是以root为根的子树的最大深度了,然后再返回这个深度即可。

参考博客:参考博客

转载于:https://juejin.im/post/5cf68cb26fb9a07f0a2dcd78

你可能感兴趣的:(如何写好递归)