關於遞迴題目的解法

2021-09-16 20:34:12 字數 1135 閱讀 7734

**作

由於自己遇到好多次遞迴的問題,一開始也不是很理解,看到大佬們的題解都是膜拜ing 打算自己總結一下

一般來說,遞迴的問題**都非常的簡潔 但簡潔所帶來的問題就是不容易理解,而且對於初學者來說,還會很容易轉牛角尖

往往遞迴的問題都有章可循,在a了幾道題並觀賞了大佬們寫的**後,總結出了遞迴問題的規律

程式反覆呼叫自身即是遞迴。

我們需要關心的主要是以下三點:

整個遞迴的終止條件。

一級遞迴需要做什麼?

應該返回給上一級的返回值是什麼?

還有乙個很重要的一點就是本身函式體的名字!!,後面我會提到,函式體的名字有著很重要的意思

我們直接看leetcode

第一題 leetcode 104. 二叉樹的最大深度

class solution 

//root的左、右子樹的最大深度

int leftdepth = maxdepth(root.left);

int rightdepth = maxdepth(root.right);

//返回的是左右子樹的最大深度+1

return math.max(leftdepth, rightdepth) + 1;

}}

第二題 leetcode 110. 平衡二叉樹

class solution 

public int depth(treenode root)

}

第三題 leetcode 101. 對稱二叉樹

class solution 

public boolean helper(treenode left , treenode right)

}

第四題 leetcode 111. 二叉樹的最小深度

class solution 

}

我們先列舉這四道題,這四道題都可以用遞迴方法直接a掉,而且**十分簡潔,我們可以看到,每乙個都是在呼叫自身。我們並不是去考慮整體**去做了什麼,而是只關心當前這一層做了什麼。

第一次寫部落格,想到哪寫到哪,文筆還需要提公升,謝謝。

一道演算法題目的解法

有這樣一道演算法題目 144張牌放到若干的盒子中,每個盒子中放10到 40張,問有多少種放法?不考慮順序 由144 10 14.4 144 40 3.6 可得,盒子的數量最少為4,最多為14.假設有n個盒子 4 n 14 每個盒子中分別放 a1,a2,an 張牌,由於不考慮順序,不妨設a1 a2 a...

一些JS題目的解法

題目是從看到的。1.找出數字陣列中最大的元素 使用mach.max函式 2.轉化乙個數字陣列為function陣列 每個function都彈出相應的數字 1,2,3 map function x 3.給object陣列進行排序 排序條件是每個元素物件的屬性個數 sort function a,b 4...

網上看到一題目的解法的啟示

已知函式 f x 2ax 2 x 1 在區間 0,1 上僅有乙個零點,求實數 a 的取值範圍。法1 某搜題軟體的解法 由於 f x 0 在區間 0,1 上僅有乙個根,有以下兩種情形 f 0 f 1 0 begin a neq 0 delta 0 end 且解在 0,1 上,由 得 1 2a 2 0 ...