当前位置:首页 > Java

java如何表示阶乘

2026-03-25 02:18:55Java

Java 表示阶乘的方法

使用循环实现阶乘

通过循环结构(如 forwhile)计算阶乘是最基础的方法。以下是示例代码:

java如何表示阶乘

public static long factorialWithLoop(int n) {
    if (n < 0) throw new IllegalArgumentException("n must be non-negative");
    long result = 1;
    for (int i = 2; i <= n; i++) {
        result *= i;
    }
    return result;
}
  • 参数校验:输入 n 必须为非负数,否则抛出异常。
  • 循环累乘:从 2 开始逐步累乘到 n,初始值为 1(因为 0! 和 1! 均为 1)。

使用递归实现阶乘

递归方法利用阶乘的数学定义(n! = n × (n-1)!)直接实现:

java如何表示阶乘

public static long factorialWithRecursion(int n) {
    if (n < 0) throw new IllegalArgumentException("n must be non-negative");
    return n <= 1 ? 1 : n * factorialWithRecursion(n - 1);
}
  • 基线条件:当 n 为 0 或 1 时返回 1。
  • 递归调用:将问题分解为 n 乘以 (n-1)! 的子问题。

处理大数阶乘

n 较大时(如 n > 20),long 类型会溢出,需使用 BigInteger

import java.math.BigInteger;

public static BigInteger factorialWithBigInteger(int n) {
    if (n < 0) throw new IllegalArgumentException("n must be non-negative");
    BigInteger result = BigInteger.ONE;
    for (int i = 2; i <= n; i++) {
        result = result.multiply(BigInteger.valueOf(i));
    }
    return result;
}
  • 大数运算BigInteger 支持任意精度的整数运算,避免溢出问题。

注意事项

  • 性能考量:递归方式代码简洁,但可能引发栈溢出(如 n 极大时),循环更安全。
  • 输入范围long 类型最大支持 20!(值为 2432902008176640000),BigInteger 无此限制。

示例调用

public static void main(String[] args) {
    System.out.println(factorialWithLoop(5)); // 输出 120
    System.out.println(factorialWithRecursion(5)); // 输出 120
    System.out.println(factorialWithBigInteger(50)); // 输出 30414093201713378043612608166064768844377641568960512000000000000
}

标签: 阶乘表示
分享给朋友:

相关文章

js 实现阶乘

js 实现阶乘

递归实现 递归是计算阶乘最直观的方法之一。递归函数会不断调用自身,直到达到基本情况(通常是 n === 0 或 n === 1)。 function factorialRecursive(n) {…

实现阶乘JS

实现阶乘JS

递归实现阶乘 递归是一种直接按照数学定义实现阶乘的方法。n的阶乘可以表示为n乘以(n-1)的阶乘,基础情况是0的阶乘为1。 function factorialRecursive(n) { if…

用js实现阶乘

用js实现阶乘

递归方法实现阶乘 递归是计算阶乘的经典方法,通过函数调用自身实现。n的阶乘(n!)定义为n * (n-1)!,递归终止条件为n等于0或1。 function factorialRecursive(n…

php实现阶乘算法

php实现阶乘算法

递归实现阶乘 递归是一种常见的实现阶乘的方法,通过不断调用自身函数来解决问题。递归实现阶乘的代码简洁直观。 function factorial($n) { if ($n <= 1)…

递归实现阶乘php

递归实现阶乘php

以下是使用递归方法实现阶乘的PHP代码示例: 代码实现 function factorial($n) { if ($n <= 1) { return 1; }…

php递归实现阶乘

php递归实现阶乘

递归实现阶乘的原理 递归是一种通过函数调用自身来解决问题的方法。对于阶乘问题,递归的基本思想是将问题分解为更小的子问题,直到达到基本情况(通常是0或1的阶乘),然后逐步返回结果。 递归终止条件 在阶…