gpt4 book ai didi

java - 阶乘 java 返回 0

转载 作者:行者123 更新时间:2023-11-29 10:01:51 25 4
gpt4 key购买 nike

我做了一个简单的函数来计算一个数字的阶乘,但是从数字 34 返回 0 。它应该来自 51 号。

   public class Métodos {
public int factorial (int numero ){

if ((numero <0)||(numero>50)){

return 0;
}

else if ((numero == 0)||(numero == 1)){

return 1;
}

else{

return numero * factorial(numero -1);


}

}




}

谢谢!

编辑:

好的,我该如何检查?

因为它说 int 不能转换为 bigInteger。

 public static void main(String[] args) {
// TODO code application logic here
Métodos metod = new Métodos();
System.out.print("El resultado es : " + metod.factorial(-12)+ "\n");
System.out.print("El resultado es : " + metod.factorial(-1)+ "\n");
System.out.print("El resultado es : " + metod.factorial(0)+ "\n");
System.out.print("El resultado es : " + metod.factorial(1)+ "\n");
System.out.print("El resultado es : " + metod.factorial(5)+ "\n");
System.out.print("El resultado es : " + metod.factorial(51)+ "\n");
System.out.print("El resultado es : " + metod.factorial(520)+ "\n");
}

最佳答案

34 的阶乘约为 3*1038 - 它不适合 int,它最多可以容纳 2*109。值34!即使在 long 中也放不下。

如果您需要计算如此大的数的阶乘,请使用 BigInteger类代替。该类的对象可以保存任意大小的整数值。请注意,这些操作不会通过中缀运算符完成,而是通过方法完成:

public BigInteger factorial (int numero ){
if (numero < 0) {
return BigInteger.ZERO;
} else if (numero==0){
return BigInteger.ONE;
} else {
return BigInteger.valueOf(numero).multiply(factorial(numero-1));
}
}

关于java - 阶乘 java 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23047857/

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