Java 打印阶乘 1-30

Java print factorials 1-30

我想做的就是打印阶乘 数字 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));
}