BigInteger b = BigInteger.valueOf(calcFib(Integer.parseInt(args[0])));
我尝试运行它来为一个大的Fibonacci数创建一个新的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表示糟糕的操作数类型。再次对不起我的无知并感谢你的帮助!
答案 0 :(得分:2)
BigInteger
类在java.math.BigInteger
内定义,因此请尝试导入java.math.BigInteger
。
答案 1 :(得分:1)
在问题的第二部分中,如果您使用BinIntegers
而不是int
或long
类型,则需要稍微更改代码,因为您无法做到使用通常的+
运算符或自动在int
和BigInteger
之间进行转换。
修改后的代码应如下所示:
public static BigInteger calcFib(int n)
{
if(n == 1 || n == 2)
return BigInteger.ONE;
else
{
return calcFib(n - 1).add(calcFib(n - 2));
}
}
在一个理想的世界中,你可能还会检查零和负数并通过抛出异常来处理它们。