递归函数

64 阅读1分钟
                        递归函数
          条件1   一个函数 在内部 调用了 自身
          条件2   在合适的实际 结束调用(结束递归) 一定要有, 不然就是 死递归
          
          function fn(n) {
            return n * fn(n - 1)
        }
        fn(4)

        第一次 调用 传参 4
            形参 n == 4
            函数体 return n * fn(n - 1)     --->  return 4 * fn(3)


            计算 fn(3)  ---> 计算 3 的阶乘
                调用 传参 3
                形参 n == 3
                函数体 return n * fn(n - 1)     ---> return 3 * fn(2)

                计算 fn(2) ---> 计算 2 的阶乘
                调用 传参 2
                形参 n == 2
                函数体 return n * fn(n - 1)     --->    return 2 * fn(1)

                    计算 fn(1)  ---> 计算 1 的阶乘
                    调用 传参 1
                    形参 n == 1
                    函数体 return n * fn(n - 1) --->    retrun 1 * fn(0)

                        计算 fn(0)  ---> 计算 0 的阶乘
                        调用 传参 0
                        形参 n == 0
                        函数体 return n * fn(n - 1) --->    return 0 * fn(-1)