搜尋

首頁  >  問答  >  主體

javascript - 怎麼學會遞迴?

感覺很難理解,有好多建議嗎?

漂亮男人漂亮男人2691 天前842

全部回覆(6)我來回復

  • 三叔

    三叔2017-07-05 10:53:50

    看看我之前對一個遞歸問題的回答. 函數的實現功能方面理解遞歸
    不知道對你有沒有幫助.

    回覆
    0
  • 大家讲道理

    大家讲道理2017-07-05 10:53:50

    簡單的理解就是:函數呼叫自身

    合格的遞歸要有結束條件

    明白這2點,就OK了。

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-07-05 10:53:50

    1. 要想學會遞歸,首先要學會遞歸。

    2. 遞歸就是包子餡的包子,極限是饅頭。

    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)

    回覆
    0
  • 三叔

    三叔2017-07-05 10:53:50

    遞歸其實不難理解,我舉個例子,6層高的樓,只有一層有蘋果,我們在任何一層找到蘋果,都會停止。 。找一次都會出現2個結果,做判斷需要不需要往下找,往下找就是重複第一個過程,這就是遞迴。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-07-05 10:53:50

    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
    

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-07-05 10:53:50

    一個老司機的經驗:多練多悟

    回覆
    0
  • 取消回覆