美文网首页
js 数字的阶乘

js 数字的阶乘

作者: ER_PM | 来源:发表于2019-03-31 10:47 被阅读0次

    表达想法的工具,不要炫技,不能形式大于内容。

    一个正整数n的阶乘(factorial),是等于所有小于以及等于n的积。

    例如:5! = 5 * 4 * 3 * 2 * 1 等于120

    下面代码是计算正整数的阶乘

    function factorialize(num) {
    
      if(num == 0){
        return 1;
      }
      return num * factorialize(num-1);
    }
       
    console.log(factorialize(5)); 
    //打印 120
    

    这段代码非常的抽象,但是用手写下来它的调用顺序,就非常的容易理解了:

    第1次调用后为:5 * factorialize(4)。
    第2次调用后为:5 * 4 * factorialize(3)。
    第3次调用后为:5 * 4 * 3 * factorialize(2)。
    第4次调用后为:5 * 4 * 3 * 2 * factorialize(1)。
    第5次调用后为:5 * 4 * 3 * 2 * 1 * factorialize(0)。
    第6次调用后为: factorialize(0) 函数中当num为0时,函数返回1。所以最后 5 * 4 * 3 * 2 * 1 * 1 = 120

    有些人会很迷惑,为什么终止调用的条件不是 num = 1,而是num = 0,是因为0也是正整数,0! = 1,所以最终的终止条件是num = 0。

    function factorialize(num) {
    
      if(num == 0){
        return 1;
      }
      return num * factorialize(num-1);
    }
       
    console.log(factorialize(0)); 
    //打印 1
    

    相关文章

      网友评论

          本文标题:js 数字的阶乘

          本文链接:https://www.haomeiwen.com/subject/dpjybqtx.html