将函数从long返回更改为BigInteger

时间:2018-09-10 03:25:11

标签: java biginteger

我正在开发一个查找斐波那契数的程序。作业的第一个版本要求返回长数据类型,现在我们必须更改函数以返回BigInteger。我不确定如何更改函数以发送回BigInteger类型。这是我所拥有的:

public static BigInteger fibonacci_Loop(int f) {
    BigInteger previous, current;

    for(int i = 0; i < f; i ++) {
        BigInteger sum = previous.add(current);
        previous = current;
        current = sum;
    }
    return previous;
}

它将无法运行,因为它希望我初始化先前和当前的内容,并且每次执行时都不会返回正确的数字。我不确定如何使用BigInteger,任何建议都将不胜感激。

4 个答案:

答案 0 :(得分:3)

以下代码对我有用。先初始化为零,然后再初始化为1,然后同样地运行循环。请注意,该循环的运行比所需的fibnacci索引少一。

public static BigInteger fibonacci_Loop(int f) {
BigInteger previous = BigInteger.ZERO;
BigInteger current = BigInteger.ONE;

for(int i = 0; i < f-1; i ++) {
    BigInteger sum = previous.add(current);
    previous = current;
    current = sum;
}
return previous;

}

答案 1 :(得分:1)

您可以使用带有String的构造函数:

BigInteger i = new BigInteger(“0”);

但是提供了可以使用的常量:

BigInteger previous = BigInteger.ZERO;
BigInteger current= BigInteger.ONE;

答案 2 :(得分:0)

在使用long时,它们是原始类型或盒装类型,因此在声明时默认为0。

java.math.BigInteger是一个对象,因此您必须在使用它之前对其进行初始化。

将此行BigInteger previous, current;更改为BigInteger previous = new BigInteger("0"), current = new BigInteger("1");应该可以解决。

答案 3 :(得分:0)

规则:首先,您需要先对在函数内部声明的任何变量进行初始化,然后对该函数执行任何操作。

  

更改我们的函数以返回BigInteger

如果您只需要返回BigInteger,则只需将前一个函数的return语句更改为长到

return new BigInteger(previous);