java如何求n
Java 求 n 的阶乘(n!)
在 Java 中,求 n 的阶乘(n!)可以通过多种方法实现,包括递归、迭代和大数处理(适用于大数阶乘)。以下是几种常见的方法:
递归方法
递归是一种简洁的实现方式,但需要注意栈溢出问题,适用于较小的 n 值。

public static long factorialRecursive(int n) {
if (n == 0 || n == 1) {
return 1;
}
return n * factorialRecursive(n - 1);
}
迭代方法
迭代方法避免了递归的栈溢出问题,效率更高。

public static long factorialIterative(int n) {
long result = 1;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
大数阶乘
对于较大的 n 值(如 n > 20),使用 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;
}
示例调用
以下是调用上述方法的示例代码:
public static void main(String[] args) {
int n = 10;
System.out.println("递归阶乘: " + factorialRecursive(n));
System.out.println("迭代阶乘: " + factorialIterative(n));
System.out.println("大数阶乘: " + factorialBigInt(n));
}
注意事项
- 递归方法虽然简洁,但不适合计算大数阶乘,可能会导致栈溢出。
- 对于 n ≥ 20,
long类型会溢出,必须使用BigInteger。 - 时间复杂度均为 O(n),但递归的空间复杂度为 O(n)(由于调用栈),而迭代为 O(1)。






