我正在开发一个查找斐波那契数的程序。作业的第一个版本要求返回长数据类型,现在我们必须更改函数以返回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,任何建议都将不胜感激。
答案 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);