首页  >  问答  >  正文

javascript - 怎么学会递归?

感觉难以理解,有好多建议吗?

漂亮男人漂亮男人2642 天前812

全部回复(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
  • 取消回复