分享
三行代码  ›  专栏  ›  技术社区  ›  kevin

递归中的参数继承

  •  0
  • kevin  · 技术社区  · 2 年前

    下面是从coderbyte复制/粘贴。我很困惑这是如何工作的,我很难找到合适的答案。有人能告诉我为什么子函数会自动继承父函数的参数,这里发生的事情比子函数没有任何参数和自动联系更多吗?

    这是密码。

    function FirstFactorial(num) { 
    
      // our factorial function
      function factorial(n) { 
    
        // terminate the recursion once we hit zero
        if (n===0) { return 1; }
    
        // otherwise keep calling the function recursively 
        else { return factorial(n-1) * n; }
    
      }
    
      return factorial(num);
    
    }
    
    FirstFactorial(4);
    
    2 回复  |  直到 2 年前
        1
  •  3
  •   Mark Meyer    2 年前

    不仅是 这里发生的事情比你第一眼想到的要少。嵌套函数与以下相同:

    function FirstFactorial(num) {
      return factorial(num);
    }
    
    function factorial(n) {
      // terminate the recursion once we hit zero
      if (n === 0) { return 1;}
      // otherwise keep calling the function recursively 
      else { return factorial(n - 1) * n;}
    }
    
    let f = FirstFactorial(4);
    console.log(f)

    (就所有实际目的而言)与以下内容相同:

    function factorial(n) {
      // terminate the recursion once we hit zero
      if (n === 0) { return 1;}
      // otherwise keep calling the function recursively 
      else {return factorial(n - 1) * n;}
    }
    
    let f = factorial(4);
    console.log(f)

    外部函数只是包装内部函数,并没有明显的原因调用它。

        2
  •  1
  •   Jack Bashford    2 年前

    它不会继承参数-如果你看这行:

    return factorial(num);
    

    然后你看到内部功能( factorial )正在使用父函数的参数调用-此处不发生继承,只是调用。