如何寫好遞歸

1、爲何要用遞歸

採用遞歸編寫程序能使程序變得簡潔和清晰.可能須要不少步驟才能解出來的題目,用遞歸一行代碼就能解決.code

1、遞歸三步曲

  • 一、找到遞歸的終止條件:遞歸應該在何時結束?blog

  • 二、找到返回值:應該給上一級返回什麼信息?遞歸

  • 三、本級遞歸應該作什麼:在這一級遞歸中應該完成什麼任務?leetcode

2、遞歸的例子

一、求二叉樹的最大深度

看leetcode104題:求二叉樹的最大深度 直接套用遞歸三部曲:get

  • 一、找終止條件:當樹爲空,樹的深度就爲0,此時遞歸就結束了.博客

  • 二、找到返回值:應該返回什麼?題目要求咱們返回樹的最大深度,最大深度一定出如今左子樹或右子樹中.那麼返回值就應該是當前樹的最大深度.class

  • 三、本級遞歸應該作什麼:首先,仍是強調要走出以前的思惟誤區,遞歸後咱們眼裏的樹必定是這個樣子的,看下圖。此時就三個節點:root、root.left、root.right,其中根據第二步,root.left和root.right分別記錄的是root的左右子樹的最大深度。那麼本級遞歸應該作什麼就很明確了,天然就是在root的左右子樹中選擇較大的一個,再加上1就是以root爲根的子樹的最大深度了,而後再返回這個深度便可。二叉樹

參考博客:參考博客程序

相關文章
相關標籤/搜索