JavaScript 中计算阶乘的函数


本文的任务是使用 JavaScript 获取数字的阶乘。

什么是阶乘?

小于或等于 n 的所有正整数的乘积就是非负整数的阶乘。

例如,假设非负整数为 4,则 4 的阶乘为 4*3*2*1,等于 24。阶乘的符号用 "!" 表示,所以就是 (4!)。

0! 的值为 1,因为 0 不是正整数。

阶乘的数学公式

("n!") 这就是数字阶乘的表示方式。它是小于或等于 n 的所有正整数的乘积。

以下是阶乘的公式。

n! = n*(n-1)*(n-2)*……3*2*1 

使用 for 循环

我们可以使用 for 循环计算数字的阶乘。

算法

以下是使用 for 循环获取给定数字阶乘的步骤。

  • 创建一个值为 1 的变量 (result)

  • 调用函数 fact(num)

  • 如果 num 小于 0,则返回 -1。

  • 如果 num = 0,则返回 1。

  • 如果 num > 1,则每次迭代都会将值减少 1 并乘以 result

  • 阶乘结果将存储在 result 变量中。

示例

以下是使用上述 for 循环算法获取数字阶乘的程序。

<!DOCTYPE html> <html> <head> <title>Factorial of a number</title> <button onClick = "func()"> Click to get factorial </button> <p id="para"> </para> <script> function func() { function fact(num) { if (num < 0){ return -1; } else if(num == 0){ return 1; } else { let result = 1; for(var i = num; i > 1; i--){ result *= i; }; return result; } }; const num = 4; document.getElementById("para").innerHTML = fact(num); }; </script> </head> </html>

正如我们在输出中看到的,它通过迭代输入数字并在每次迭代中递减它来使用 for 循环计算数字的阶乘。

使用递归

我们可以通过递归获得数字的阶乘。

算法

以下是通过递归实现数字阶乘的步骤。

  • num 获取数字。

  • 调用函数 factorial(num)

  • 如果 num 小于 0,则返回 -1。

  • 否则如果 num = 0 返回 1。

  • 否则,返回 (num * factorial(num - 1))

示例

以下是使用上述递归算法获取数字阶乘的示例:

<!DOCTYPE html> <html> <title>Factorial of a number</title> <head> <button onClick = "func()">Factorial</button> <p id="para"> </para> <script> function func(){ function factorial(num) { if (num < 0) { return -1; } else if (num == 0){ return 1; } else { return num * factorial(num - 1); } } let num = 4; document.getElementById("para").innerHTML = factorial(num); }; </script> </head> </html>

执行上述程序后,将显示一个名为“阶乘”的按钮。如果单击此按钮,则计算输入数字 (4) 的阶乘并打印结果。

使用 while 循环

我们可以使用 while 循环实现数字的阶乘。

算法

以下是使用 while 循环计算数字阶乘的步骤。

  • 创建变量 res

  • 调用函数 fact(num)

  • 如果 num 小于 0,则返回 -1。

  • 如果 num = 0,则返回 1。

  • 如果 num > 1,则每次迭代都会将值减少 1 并乘以 result

  • 阶乘结果将存储在 result 变量中。

示例

以下是使用 while 循环获取数字阶乘的示例:

<!DOCTYPE html> <html> <head> <title>Factorial of a number</title> <button onClick = "func()">Click me! </button> <p id = "para"></para> <script> function func(){ function fact(num) { var res = num; if (num === 0){ return 1; } else if (num === 1){ return 1; } else{ while (num > 1) { num--; res *= num; } } return res; }; const num = 4; document.getElementById("para").innerHTML = fact(num); }; </script> </head> </html>

从输出中我们可以看到,while 循环用于通过迭代输入数字并在每次迭代时递减它来计算给定数字的阶乘。

更新于:2022年9月23日

11K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.