返回题目列表
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