84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
感覺很難理解,有好多建議嗎?
看看我之前對一個遞歸問題的回答. 函數的實現功能方面理解遞歸不知道對你有沒有幫助.
簡單的理解就是:函數呼叫自身。
自身
合格的遞歸要有結束條件。
結束條件
明白這2點,就OK了。
要想學會遞歸,首先要學會遞歸。
遞歸就是包子餡的包子,極限是饅頭。
給一個正常的程式碼範例:
假設我們想要遍歷一個【巢狀的】資料結構,如【DOM 元素的children 屬性還是同類型的DOM 元素】,這時就會使用到最簡單而常見的遞歸:函數呼叫自己,一層層解開嵌套,這只需要一兩行JS 即可實現:
function walk (node) { // 先打印出本节点的值 console.log(node.value) // 对每个 child 调用自身 node.children.forEach(child => walk(chid)) } // 简单的树形嵌套数据结构示例 const tree = { value: 1, children: [ { value: 2, children: [] }, { value: 3, children: [{ value: 4, chilren: [] }] }, { value: 5, children: [] } ] } // 遍历该树形数据结构 walk(tree)
遞歸其實不難理解,我舉個例子,6層高的樓,只有一層有蘋果,我們在任何一層找到蘋果,都會停止。 。找一次都會出現2個結果,做判斷需要不需要往下找,往下找就是重複第一個過程,這就是遞迴。
int i; int function a(i){ if (i < 2) return a(i+1); else return i; } a(0); //执行后返回2
上面程式碼便於理解沒寫標準,遞歸就是呼叫自己形成巢狀.因為只有一個return語句,所以呼叫a(0)後我們可以這樣看:嵌套進去:
a(0)->a(a(0+1))->a(a(1)) a(a(a(1+1)))->a(a(a(2)))
在回來:
a(a(a(2)))->a(a(2)) a(a(2))->a(2) a(2)->2
一個老司機的經驗:多練多悟
看看我之前對一個遞歸問題的回答. 函數的實現功能方面理解遞歸
不知道對你有沒有幫助.
簡單的理解就是:函數呼叫
自身
。合格的遞歸要有
結束條件
。明白這2點,就OK了。
要想學會遞歸,首先要學會遞歸。
遞歸就是包子餡的包子,極限是饅頭。
給一個正常的程式碼範例:
假設我們想要遍歷一個【巢狀的】資料結構,如【DOM 元素的children 屬性還是同類型的DOM 元素】,這時就會使用到最簡單而常見的遞歸:函數呼叫自己,一層層解開嵌套,這只需要一兩行JS 即可實現:
遞歸其實不難理解,我舉個例子,6層高的樓,只有一層有蘋果,我們在任何一層找到蘋果,都會停止。 。找一次都會出現2個結果,做判斷需要不需要往下找,往下找就是重複第一個過程,這就是遞迴。
上面程式碼便於理解沒寫標準,遞歸就是呼叫自己形成巢狀.
因為只有一個return語句,所以呼叫a(0)後我們可以這樣看:
嵌套進去:
在回來:
一個老司機的經驗:多練多悟