当前位置: 首页 > 面试题库 >

BigInteger的困难

祝高超
2023-03-14
问题内容

我正在尝试使用递归和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不支持使用比较==和使用*。相反,您必须调用类的适当方法BigIntegerequals()multipy())。

另请注意,存在BigInteger.ZEROBigInteger.ONE

最后, 返回类型 你的fact方法应该是BigInteger,不int。是否要指定 参数
的类型BigIntegerint由您自己决定。



 类似资料:
  • 描述 (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