谁能解释一下JavaScript阶乘的原理


function jiecheng(n) {
      if (n > 1) {
        return jiecheng(n - 1) * n;
      }else {
        return n;
      }
    }

    document.write(jiecheng(3));

这个是怎么计算的,到最后还能往回执行?

递归,
第一次n=3时计算返回jiecheng(3) = jiecheng(3 - 1) * 3
然后计算jiecheng(3-1) =jiecheng(1) * 2
jiecheng(1)=1
最后结果是jiecheng(3) = jiecheng(1) * 2 * 3 =6

阶乘可以用两种方法实现,一是用while循环实现,二是用函数的递归实现,题主这是用的函数的递归原理(函数直接或者间接的调用本身)实现,题里面就是这样递归调用实现了一次又一次的乘法,从而达到递归的效果!希望回答对博主有帮助,👍!

这个是递归吧,该方法调用该方法

递归