题目
分析
本题不做更深的分析。对于已经掌握循环的读者而言,完全可以用循环的方式来求出阶乘。
题目中要求的挑战:尝试不使用循环语句(for、while)完成这个任务,需要用到函数以及“递归”。递归概念对于初学者而言略有难度,但可以用本题作为入手。
在此仅给出核心的代码:
int fact(int n) {
if (n <= 1) return 1;
return n * fact(n - 1);
}
答案

思考
本题保证\(1\le n \le 12\),而\(12!=479,001,600\),完全可以用int表示。如果用long long存放最终结果,那么可以算到20!。再大的阶乘计算,需要用到高精度——这超出了本章的范畴,先不做讨论。
