javascript - 怎么學(xué)會(huì)遞歸?
問(wèn)題描述
感覺(jué)難以理解,有好多建議嗎?
問(wèn)題解答
回答1:看看我之前對(duì)一個(gè)遞歸問(wèn)題的回答. 函數(shù)的實(shí)現(xiàn)功能方面理解遞歸不知道對(duì)你有沒(méi)有幫助.
回答2:簡(jiǎn)單的理解就是:函數(shù)調(diào)用自身。
合格的遞歸要有結(jié)束條件。
明白這2點(diǎn),就OK了。
回答3:要想學(xué)會(huì)遞歸,首先要學(xué)會(huì)遞歸。
遞歸就是包子餡的包子,極限是饅頭。
給出一個(gè)正常的代碼示例:
假設(shè)我們想要遍歷一個(gè)【嵌套的】數(shù)據(jù)結(jié)構(gòu),如【DOM 元素的 children 屬性還是同類(lèi)型的 DOM 元素】,這時(shí)就會(huì)使用到最簡(jiǎn)單而常見(jiàn)的遞歸:函數(shù)調(diào)用自己,一層層解開(kāi)嵌套,這只需要一兩行 JS 即可實(shí)現(xiàn):
function walk (node) { // 先打印出本節(jié)點(diǎn)的值 console.log(node.value) // 對(duì)每個(gè) child 調(diào)用自身 node.children.forEach(child => walk(chid))}// 簡(jiǎn)單的樹(shù)形嵌套數(shù)據(jù)結(jié)構(gòu)示例const tree = { value: 1, children: [ { value: 2, children: [] }, { value: 3, children: [{ value: 4, chilren: [] }] }, { value: 5, children: [] } ]}// 遍歷該樹(shù)形數(shù)據(jù)結(jié)構(gòu)walk(tree)回答4:
遞歸其實(shí)不難理解,我舉個(gè)例子,6層高的樓,只有一層有蘋(píng)果,我們?cè)谌魏我粚诱业教O(píng)果,都會(huì)停止。。查找一次都會(huì)出現(xiàn)2個(gè)結(jié)果,做判斷需要不需要往下找,往下找就是重復(fù)第一個(gè)過(guò)程,這就是遞歸。
回答5:int i;int function a(i){ if (i < 2) return a(i+1); else return i;}a(0); //執(zhí)行后返回2
上面代碼便于理解沒(méi)寫(xiě)標(biāo)準(zhǔn),遞歸就是調(diào)用自己形成嵌套.因?yàn)橹挥幸粋€(gè)return語(yǔ)句,所以調(diào)用a(0)后我們可以這樣看:嵌套進(jìn)去:
a(0)->a(a(0+1))->a(a(1))a(a(a(1+1)))->a(a(a(2)))
在回來(lái):
a(a(a(2)))->a(a(2))a(a(2))->a(2)a(2)->2回答6:
一個(gè)老司機(jī)的經(jīng)驗(yàn):多練多悟
相關(guān)文章:
1. 如何用筆記本上的apache做微信開(kāi)發(fā)的服務(wù)器2. 冒昧問(wèn)一下,我這php代碼哪里出錯(cuò)了???3. php - 淘寶訂單拆單表設(shè)計(jì)4. mysql優(yōu)化 - MySQL如何為配置表建立索引?5. MySQL主鍵沖突時(shí)的更新操作和替換操作在功能上有什么差別(如圖)6. windows誤人子弟啊7. 實(shí)現(xiàn)bing搜索工具urlAPI提交8. 數(shù)據(jù)庫(kù) - Mysql的存儲(chǔ)過(guò)程真的是個(gè)坑!求助下面的存儲(chǔ)過(guò)程哪里錯(cuò)啦,實(shí)在是找不到哪里的問(wèn)題了。9. 我在網(wǎng)址中輸入localhost/abc.php顯示的是not found是為什么呢?10. 關(guān)于mysql聯(lián)合查詢(xún)一對(duì)多的顯示結(jié)果問(wèn)題
