跳到主要内容

JavaScript程序使用递归寻找数字的阶乘

要理解这个示例,你应该具备以下 JavaScript 编程 主题的知识:

一个数字的阶乘是从 1 到那个数字的所有数字的乘积。例如,

5 的阶乘等于 1 _ 2 _ 3 _ 4 _ 5 = 120

正数 n 的阶乘表示为:

n 的阶乘 (n!) = 1 * 2 * 3 * 4.....n

负数的阶乘不存在,而 0 的阶乘是 1

示例:使用递归计算阶乘

// 程序用来计算数字的阶乘
function factorial(x) {
// 如果数字是 0
if (x == 0) {
return 1;
}

// 如果数字是正数
else {
return x * factorial(x - 1);
}
}

// 从用户那里获取输入
const num = prompt("输入一个正数:");

// 如果 num 是正数,则调用 factorial()
if (num >= 0) {
const result = factorial(num);
console.log(`数字 ${num} 的阶乘是 ${result}`);
} else {
console.log("请输入一个正数。");
}

输出

输入一个正数:4
数字 4 的阶乘是 24

在上述程序中,用户被提示输入一个数字。

当用户输入一个负数时,显示消息 "请输入一个正数。"。

当用户输入一个正数或 0 时,调用函数 factorial(num)

  • 如果用户输入数字 0,程序将返回 1
  • 如果用户输入大于 0 的数字,程序将递归地调用自身,数字逐渐减小。
  • 这个过程持续到数字变成 1。当数字到达 0 时,返回 1。

这里,

factorial(4) 返回 4 * factorial(3)
factorial(3) 返回 4 * 3 * factorial(2)
factorial(2) 返回 4 * 3 * 2 * factorial(1)
factorial(1) 返回 4 * 3 * 2 * 1 * factorial(0)
factorial(0) 返回 4 * 3 * 2 * 1 * 1