我正在尝试使用递归和 BigInteger 进行阶乘,但 eclipse 抱怨 BigInteger。我知道这个程序应该很简单,但它让我头疼。这是代码。
import java.util.Scanner;
import java.math.BigInteger;
public class Factorial
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Enter integer");
BigInteger n = input.nextBigInteger();
System.out.println("Factorial of " + n + " is " + fact(n));
}
public static int fact(BigInteger n)
{
if(n ==0)
{
return 1;
}
else
{
return n * fact(n-1);
}
}
}
BigInteger
不支持使用比较==
和乘法使用*
。相反,您必须调用适当的方法BigInteger
class (equals() http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html#equals%28java.lang.Object%29 and multipy() http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html#multiply%28java.math.BigInteger%29).
另请注意,存在BigInteger.ZERO http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html#ZERO and BigInteger.ONE http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html#ONE.
最后,返回类型你的fact
方法应该是BigInteger
并不是int
。无论您想要argument属于类型BigInteger
or int
你决定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)