javascript - 怎么學會遞歸?
問題描述
感覺難以理解,有好多建議嗎?
問題解答
回答1:看看我之前對一個遞歸問題的回答. 函數的實現功能方面理解遞歸不知道對你有沒有幫助.
回答2:簡單的理解就是:函數調用自身。
合格的遞歸要有結束條件。
明白這2點,就OK了。
回答3:要想學會遞歸,首先要學會遞歸。
遞歸就是包子餡的包子,極限是饅頭。
給出一個正常的代碼示例:
假設我們想要遍歷一個【嵌套的】數據結構,如【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)回答4:
遞歸其實不難理解,我舉個例子,6層高的樓,只有一層有蘋果,我們在任何一層找到蘋果,都會停止。。查找一次都會出現2個結果,做判斷需要不需要往下找,往下找就是重復第一個過程,這就是遞歸。
回答5: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回答6:
一個老司機的經驗:多練多悟
相關文章:
1. android - NavigationView 的側滑菜單中如何保存新增項(通過程序添加)2. tp5 不同控制器中的變量調用問題3. 微信小程序可以用gulp,webpack嗎?4. mysql服務無法啟動1067錯誤,誰知道正確的解決方法?5. ueditor上傳服務器提示后端配置項沒有正常加載,求助!!!!!6. python - 為什么正常輸出中文沒有亂碼,zip函數之后出現中文編程unicode編碼的問題,我是遍歷輸出的啊。7. 老師 我是一個沒有學過php語言的準畢業生 我希望您能幫我一下8. 這段代碼既不提示錯誤也看不到結果,請老師明示錯在哪里,謝謝!9. php7.3.4中怎么開啟pdo驅動10. 提示語法錯誤語法錯誤: unexpected ’abstract’ (T_ABSTRACT)
