我想做的就是打印阶乘 数字 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
,因此它将始终在 0
和 1
之间翻转。此外,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/