如何创建一个新的 BigInteger 变量并创建一个 returns BigInteger 的方法?

How do I create a new BigInteger variable and make a method that returns a BigInteger?

BigInteger b = BigInteger.valueOf(calcFib(Integer.parseInt(args[0])));

我尝试 运行 为一个大的斐波那契数创建一个新的 BigInteger,但每当我这样做时,都会抛出这个错误:

error: cannot find symbol

    BigInteger b = BigInteger.valueOf(calcFib(Integer.parseInt(args[0])));
    ^
symbol: class BigInteger

location: class FibonacciCalculator 

如果有帮助,我已经导入了 java.lang.Object。我还是编程新手,所以请不要评判 :P

编辑:原来是在 main 中完成的,但是现在我在导入后这行代码遇到了新问题 java.math.BigInteger

public static BigInteger calcFib (int n)
{
    if(n == 1 || n == 2)
        return 1;
    else
    {
        return calcFib(n-1) + calcFib(n-2);
    }
}

if/else 语句的两个部分都抛出错误,if 说 int 可以 ' 转换为 BigInteger,else 表示错误的操作数类型。再次为我的无知感到抱歉,感谢您的帮助!

BigInteger class 定义在 java.math.BigInteger 中,所以尝试导入 java.math.BigInteger

在问题的第二部分,如果您使用 BinIntegers 而不是 intlong 类型,则需要稍微更改代码,因为您不能使用通常的 + 运算符或在 intBigInteger.

之间自动转换

修改后的代码应如下所示:

public static BigInteger calcFib(int n)
{
    if(n == 1 || n == 2)
        return BigInteger.ONE;
    else
    {
        return calcFib(n - 1).add(calcFib(n - 2));
    }
}

在理想情况下,您可能还会检查零和负数并通过抛出异常来处理它们。