我正在尝试使用递归和BigIntegers进行阶乘,但是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
(equals()
和multipy()
)。
另请注意,存在BigInteger.ZERO
和BigInteger.ONE
。
最后, 返回类型 你的fact
方法应该是BigInteger
,不int
。是否要指定 参数
的类型BigInteger
或int
由您自己决定。
描述 (Description) java.math.BigInteger.modPow(BigInteger exponent, BigInteger m)返回一个BigInteger,其值为(this exponent mod m)。 与pow不同,此方法允许负指数。 声明 (Declaration) 以下是java.math.BigInteger.modPow()方法的声明。 public
问题内容: 在Java中,大多数基本类型都是带符号的(一位用于表示+/-),因此当我超出类型的限制时,我会得到意外的结果,例如负数。 有什么比使用BigInteger更好的解决方案了,因为BigInteger存在性能问题,并且您需要对基本算术使用类方法而不是语言运算符(以提高可读性)? 问题答案: 不,没有更好的解决方案。如果您使用的值不能为长整型或双精度型,那么您将需要使用诸如的引用类型,并且J
描述 (Description) java.math.BigInteger.xor(BigInteger val)返回一个BigInteger,其值为(this ^ val)。 当且仅当this和val中的一个为负时,此方法返回负BigInteger。 声明 (Declaration) 以下是java.math.BigInteger.xor()方法的声明。 public BigInteger xo
描述 (Description) java.math.BigInteger.subtract(BigInteger val)返回一个BigInteger,其值为(this - val)。 声明 (Declaration) 以下是java.math.BigInteger.subtract()方法的声明。 public BigInteger subtract(BigInteger val) 参数 (
描述 (Description) java.math.BigInteger.remainder(BigInteger val)返回一个BigInteger,其值为(this%val)。 声明 (Declaration) 以下是java.math.BigInteger.remainder()方法的声明。 public BigInteger remainder(BigInteger val) 参数
描述 (Description) java.math.BigInteger.or(BigInteger val)返回一个BigInteger,其值为(this | val)。 当且仅当this或val为负时,此方法返回负BigInteger。 声明 (Declaration) 以下是java.math.BigInteger.or()方法的声明。 public BigInteger or(BigIn