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

问题描述:

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

我尝试运行此为大Fibonacci数创建一个新的BigInteger,但每当我做的,这个错误被抛出:如何创建新的BigInteger变量并创建一个返回BigInteger的方法?

error: cannot find symbol 

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

location: class FibonacciCalculator 

我已经导入java.lang.Object中是否有帮助。我还是新的节目,所以请不要判断:P

编辑:原来是在主要进口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

你可以在你想要做的地方添加你的方法代码吗? – utkarsh31

+0

这是主要的方法,其中我声明我的变量和打印BigInteger – Darth7urtle

+2

只是导入java.math.BigInteger包 –

BigInteger类是在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)); 
    } 
} 

在一个理想的世界,你可能还需要检查零个负数并抛出一个异常处理这些。

+0

谢谢!此后工作良好,现在为了让我的电脑找到第999个斐波那契数字的长远目标。 :P – Darth7urtle

+0

Hi @ Darth7urtle,我认为你将会永远等待使用分支递归算法计算第999个数字,因为这将需要大约2^999(=大约10^300)的加法。看看你能否找到线性时间复杂度fib。 – msandiford

+0

该死的我从来没有真正做过多少添加的计算,谢谢你的高昂! @msandiford – Darth7urtle