OlveraeUNSW
返回题目列表
COMP2521

递归 · 阶乘

递归 · 阶乘 n!

用递归算出 n!(n 的阶乘)。n! = n × (n-1) × … × 2 × 1,规定 0! = 1。

这正是页面交互区演示的那个 fact。请补全它,记牢递归的两个零件:

  • 基准情形:n == 0 时直接返回 1(到底了,不再递归)。
  • 递归情形:返回 n * fact(n - 1)(把问题缩小 1,交给更小的自己)。
易错点(正是错误实验室里的坑):① 漏写基准 if (n == 0) return 1; → 无限递归、栈溢出。② 基准返回 0 而不是 1 → 乘积会被一路乘成 0(阶乘的「单位元」是 1,不是 0)。③ 递归调用必须是 fact(n - 1),少写 -1 则 n 永远不变小,永远到不了基准。

输入

  • 一行:整数 n(0 ≤ n ≤ 12,保证结果在 int 范围内)。

输出

  • 一行:n! 的值。

示例:输入 4 → 输出 24(因为 4×3×2×1 = 24)。

样例

stdin
4
期望输出
24
stdin
0
期望输出
1
c-dcc
14