如何实现阶乘java
递归方法实现阶乘
递归是一种直接且简洁的实现方式,通过函数调用自身逐步分解问题。
public static int factorialRecursive(int n) {
if (n == 0 || n == 1) {
return 1; // 基础情况:0!或1!等于1
}
return n * factorialRecursive(n - 1); // 递归调用
}
注意:递归可能存在栈溢出风险(如输入较大时),需谨慎使用。
迭代方法实现阶乘
通过循环逐步计算乘积,避免递归的栈开销,适合大数计算。

public static int factorialIterative(int n) {
int result = 1;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
优点:效率高,无栈溢出风险。
大数阶乘处理(使用BigInteger)
当需要计算较大数的阶乘(如100!)时,int或long会溢出,需使用BigInteger类。

import java.math.BigInteger;
public static BigInteger factorialBigInt(int n) {
BigInteger result = BigInteger.ONE;
for (int i = 2; i <= n; i++) {
result = result.multiply(BigInteger.valueOf(i));
}
return result;
}
适用场景:处理远超long范围的阶乘结果。
输入验证与完整示例
在实际应用中需验证输入合法性(如负数无阶乘)。
public static void main(String[] args) {
int num = 5;
if (num < 0) {
System.out.println("负数无阶乘!");
} else {
System.out.println(num + "! = " + factorialIterative(num));
}
}
关键点:
- 输入应为非负整数。
- 根据需求选择递归、迭代或大数方法。






