代码之家  ›  专栏  ›  技术社区  ›  Rohit Kumar

在javascript递归函数中运行一次

  •  -5
  • Rohit Kumar  · 技术社区  · 7 年前

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

    让我解释一下我的问题 factorial 作用

    我只想跑一次第一线。

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

    function factorial(n) {
        n = n || 1 //This Line
        if ((n == 0) || (n == 1)) {
            return 1
        }
        return factorial(n - 1);
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Pointy    7 年前

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

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

    现在 n || 1 初始化只发生一次,当内部 compute() 函数被调用。

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