Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript递归函数中运行一次_Javascript_Recursion - Fatal编程技术网

在javascript递归函数中运行一次

在javascript递归函数中运行一次,javascript,recursion,Javascript,Recursion,如何在Javascript递归中只运行一次 让我用factorial函数来解释我的问题 我只想跑一次第一线 我有不同的用例,不是这个。我很清楚我可以做factorial(n=1) 将用于在外部函数中递归求值的函数包装到外部函数中通常会很有帮助,以使API更干净: function factorial(n) { function compute(n) { if (n === 0 || n === 1) return 1; return n * compute(n -

如何在Javascript递归中只运行一次

让我用
factorial
函数来解释我的问题

我只想跑一次第一线

我有不同的用例,不是这个。我很清楚我可以做factorial(n=1)


将用于在外部函数中递归求值的函数包装到外部函数中通常会很有帮助,以使API更干净:

function factorial(n) {
  function compute(n) {
    if (n === 0 || n === 1)
      return 1;
    return n * compute(n - 1);
  }
  return compute(n || 1);
}
现在,当调用内部
compute()
函数时,
n | | 1
初始化只发生一次

创建这样的包装器对于一些组合算法更有用(“查找所有组合…”等等)

function factorial(n) {
  function compute(n) {
    if (n === 0 || n === 1)
      return 1;
    return n * compute(n - 1);
  }
  return compute(n || 1);
}