Java 打印阶乘 1-30

标签 java factorial

我想做的就是打印阶乘 数字 0-30。当我运行它时,它会无休止地打印 Factorial=0。有人可以告诉我如何纠正这个问题吗?

public static void factor(){

    int n=0;
    int factorial = 1;
    while (n<=0&n<=30)
    {
        n=n++;
      factorial = factorial * n;
      n--;
      System.out.println("Factorial = " + factorial);
    }


}


public static void main(String[] args) {
   factor();
}

最佳答案

您在循环内递减 n,因此它将始终在 01 之间翻转。此外,int 无法容纳如此大的数字,long 也不能。您必须使用更智能的东西,例如 BigInteger :

int n = 0;
BigInteger factorial = BigInteger.ONE;
while (n <= 30) {
    System.out.printf("Factorial(%d) = %s%n", n, factorial);
    n++;
    factorial = factorial.multiply(BigInteger.valueOf(n));
}

关于Java 打印阶乘 1-30,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43018225/

相关文章:

algorithm - 找到修改后的阶乘 N 模一些与 N 互质的数

c - 查找大阶乘中特定数字的计数

java - 无法在 Worklight 6.2、6.3 中获取 HTTP 响应

java - 使用 Jackcess 从 Access 表中删除特定行

java - maven如何找到Java编译器?

python - 为什么我的计算机内置计算器最多只能计算 101 个阶乘,但我的 python 阶乘脚本可以计算得更高?

用 C 计算斯特林近似

java - Android解析开户错误

java - 在 JSF 1.2 中,我如何更改 RenderResponsePhase 的日志级别?

计算总和 1+(1/2!)+...+(1/n!)