【问题标题】:Can anyone explain the working of the following recursive function?谁能解释以下递归函数的工作原理?
【发布时间】:2022-01-25 18:50:53
【问题描述】:

我想知道下面的代码是从 10 到 1 的返回数字,但在这样做之后它再次调用自己 10 次但没有做任何事情。我试图在调试器变量的帮助下逐步理解代码,但无法理解。

let countDown = function f(fromNumber) {
  console.log(fromNumber);

  let nextNumber = fromNumber - 1;

  if (nextNumber > 0) {
    f(nextNumber);
  }
}

let newYearCountDown = countDown;
countDown = null;
newYearCountDown(10);

如需更多参考,请访问Javascripttutorial了解代码详情。

【问题讨论】:

  • 每次调用自己时都会记录下一个数字。
  • 为什么你认为它调用自己的次数超过了 10 次?

标签: javascript function recursion


【解决方案1】:

Recursion 是一个调用自身的进程。调用自身的函数称为递归函数。在您的示例中,您的第一个函数没有完成,但它的 if 条件是正在运行的。在if 条件下,您的函数更像是在进行另一个呼叫时暂停。您的第一个函数等待它完成。

以这种方式,进行了 10 个函数调用,并且都在 if 条件内等待。在最后一个条件 (nextNumber == 0) 失败后,函数返回到 if 条件正在等待的第 9 个函数。同样的,你所有的功能都会从9点到1点一个一个的完成。

【讨论】:

  • 另外,请注意您的函数没有返回任何内容。因为您没有设置返回值。所以返回值不会传回第 9 次、第 8 次 .... 运行。
猜你喜欢
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 2012-01-05
  • 2020-07-15
  • 2021-04-29
  • 2020-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多