資料結構與演算法 遞迴

2021-10-05 20:05:00 字數 426 閱讀 8526

一、概念

遞迴是一種高效、簡介的編碼技巧,一種應用很廣泛的演算法,比如dfs深度優先搜尋,前中後序二叉樹遍歷等都是使用遞迴。

方法或函式呼叫自身的方式成為遞迴呼叫,呼叫稱為遞,返回成為歸

所有遞迴問題都可以用遞迴公式來表示

二、遞迴優缺點

優點:**簡潔

缺點:堆疊溢位風險(可根據調整遞迴呼叫的最大深度來解決),出現重複計算問題(用某種資料結構來儲存已經求解過的值f(k),當呼叫f(k)時,先看一下是否求解過),空間複雜度高o(n),過多函式計算會耗時較多

三、遞迴需滿足三個條件(什麼時候可以應用到遞迴)

1、乙個問題可以分解成幾個子問題的解

2、這個問題與分解之後的子問題,除了資料規模不同,求解思路完全一樣

3、存在遞迴終止條件

寫遞迴**最關鍵的是寫出遞推公式,找到終止條件

資料結構與演算法 認識遞迴

淺識 1 遞迴與迴圈 理論上,任何迴圈都可以重寫為遞迴形式 有些語言沒有迴圈語句,只能使用遞迴。2 迴圈改遞迴 1 發現邏輯 相似性 2 一定要有 出口 不然就會死迴圈 3 構造相似性 如果沒有明顯的相似性,可能是缺少引數,需要主動構造,與遞推類似 4 遞迴呼叫 1 遞迴呼叫僅僅是被調函式正好是主調...

11 資料結構與演算法 遞迴

created by chen da 階乘函式就是典型的遞迴 def fact n if n 0 return 1 else return n fact n 1 遞迴的特點 遞迴必須包含乙個基本的出口 base case 否則就會無限遞迴,最終導致棧溢位。比如這裡就是n 0時返回1.遞迴必須包含乙個...

資料結構與演算法 10 遞迴

深入理解遞迴 舉個假想的例子 咱來到cba上海隊球館看一場激烈的常規賽,賽場座位都坐滿了,這時候女朋友 老婆大人問你我們現在坐的是第幾排?人這麼多,個子矮,看不清咋辦?遞迴派上用場了 問前面的朋友他是第幾排?在他的排數上 1 就知道自己的排數了。那前面的朋友一臉萌比也不知道怎麼辦呢?沒事,告訴他讓他...