最常用方式是用for或while循环依次相乘1到n的整数;定义long型变量result=1l避免溢出;循环从i=1开始递增至n,每次累乘。

Java 中求阶乘最常用的方式是用 for 循环 或 while 循环,核心是把从 1 到 n 的所有整数依次相乘。
用 for 循环计算阶乘
这是最直观、最常用的方法。循环变量从 1 开始,逐步递增到 n,每次将当前值乘入累乘结果中。
- 定义一个 long 类型变量(如 result = 1L),避免 int 溢出(5! = 120,但 13! 就超过 int 范围)
- 循环条件写成 i ,确保 n 本身也被乘入
- 注意 n = 0 时阶乘为 1,for 循环从 1 开始,所以 0! 自然得到 1(循环不执行,result 保持 1)
用 while 循环计算阶乘
适合需要更灵活控制循环流程的场景,比如边读入边计算,或结合其他判断逻辑。
- 先初始化 int i = 1 和 long result = 1
- 循环条件为 i ,每次循环内更新 result *= i 和 i++
- 和 for 循环逻辑一致,只是结构更显式,便于插入调试或条件分支
处理边界与异常情况
阶乘只对非负整数有定义,实际编码中需主动防护:
- 输入负数时应抛出 IllegalArgumentException 或提示错误
- n 过大(如 > 20)会导致 long 溢出,结果变成负数或错误值;可考虑用 BigInteger 支持任意精度
- 若需重复调用,建议封装成方法,参数校验放在方法开头
简单示例代码(for 版)
public static long factorial(int n) {
if (n long result = 1;
for (int i = 1; i result *= i;
}
return result;
}
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











