gpt4 book ai didi

java - 找到没有的阶乘它工作正常,但我不明白为什么它给我阶乘 0 表示没有 56、89、77 和其他一些数字

转载 作者:行者123 更新时间:2023-11-30 10:13:27 25 4
gpt4 key购买 nike

这是我的阶乘程序代码。它工作正常,但我无法理解为什么它为 56、89、77 和其他一些数字提供阶乘 0。

private static void factorial() {
int resultant = 1, i;
System.out.println("Please Enter any number to find factorial : ");
Scanner scan = new Scanner(System.in);
int fact = scan.nextInt();
for (i = 1; i <= fact; i++) {
resultant = resultant * i;
}
System.out.println("Factorial of number : " + resultant);
}

最佳答案

您应该知道int 的大小固定为32 位。当您的计算结果产生大量无法放入这 32 位的数字时,某些位将会溢出,从而产生错误的结果。您可以尝试使用此代码。

private static void factorial() {
int resultant = 1, i;
System.out.println("Please Enter any number to find factorial : ");
Scanner scan = new Scanner(System.in);
int fact = scan.nextInt();
for (i = 1; i <= fact; i++) {
int test=resultant;
resultant = resultant * i;
if(resultant<test){
system.out.println("Looks like overflow occured");
}
}
System.out.println("Factorial of number : " + resultant);
}

更好的方法是使用 BigInteger 而不是 int

关于java - 找到没有的阶乘它工作正常,但我不明白为什么它给我阶乘 0 表示没有 56、89、77 和其他一些数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51335442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com