美文网首页
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 数字的阶乘

    表达想法的工具,不要炫技,不能形式大于内容。 一个正整数n的阶乘(factorial),是等于所有小于以及等于n的...

  • 大数阶乘--10000的阶乘实现

    普通的阶乘算法: 在数字比较小的时候,以上阶乘算法还能勉强应对,但当数字大于50时,阶乘结果就达到了65位数之多,...

  • js的阶乘

    1,写一个返回阶乘的函数 在不用试arguments.callee情况下,可以使用递归: 2,编写一个函数1!+2...

  • js实现阶乘

    //while循环实现 function calNum(n) { var product = 1; while(n...

  • 原生JS实现阶乘

    使用递归 使用for循环 使用while循环

  • 算法 2.1.1 数字阶乘的计算

    题目描述 求 n! = (n-1)! × n 示例:输入:n=9输出:362880 提示:0!=1给“0!”下定义...

  • Python练习实例25 | 如何使用递归函数,求n的阶乘

    数字的阶乘,很多老师都喜欢拿这个问题来举例,因为递归函数,似乎是专门为数学当中的阶乘算法而量身打造的一样。 接下来...

  • Number of trailing zeros of N!

    这个题目的要求是,给定一个数字n,然后返回n的阶乘的尾数0的长度 一开始想准备用阶乘算出总和,然后通过切割结果,取...

  • kotlin学习之递归

    demo地址 kotlin字符串与数字数字与字符串转换 kotlin递归之阶乘 当传入参数5时的结果2020-08...

  • Java 实现阶乘算法

    Java 实现阶乘算法 阶乘算法如下: 以下列出 0 至 20 的阶乘: 0!=1,(0 的阶乘是存在的) 1!=...

网友评论

      本文标题:js 数字的阶乘

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