第 116 课
阶乘
🟢 入门 约 5 分钟
一句话理解
阶乘 n! = 12…*n,是最典型的递归例题。
为什么要学
用来练习出口和规模缩小,不代表比赛里真去递归算阶乘。
讲解
f(n)=n*f(n-1),f(0)=1。n 稍大就会爆 long long,10! 已经 3,628,800,20! 超出 64 位。
比赛里阶乘常用循环,并按题目取模。
例子
long long fac(int n) {
if (n == 0) return 1;
return n * fac(n - 1);
}
fac(4)=43211=24。
常见错误
- 用 int 算 13! 溢出。
- f(0) 写成 0。
练习 做完再看下一课
fac(3)?
long long fac(int n){if(n==0)return 1;return n*fac(n-1);}
3*2*1=6。
在线练习 C++ 在浏览器里编译,代码不会上传 已通过
Ctrl / ⌘ + Enter 运行 · Tab 缩进
隐藏测试点只是界面不展示数据。题目 JSON 会下发到浏览器,可在开发者工具里看到,只适合自学,不是正式比赛评测。
进度保存在本机浏览器里。
左右方向键也可翻课