2017-10-18 78 views
-3
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包 –

回答

2

BigInteger類是在java.math.BigInteger裏面定義的,所以試着導入java.math.BigInteger

1

在你問題的第二部分,你需要稍微修改代碼,如果你正在使用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

相關問題