2013-11-14 49 views
-5

我想寫的斐波那契序列function.It Java程序無法正常工作。可有人能幫助我嗎?它正在爲小數目僅斐波納契數列的Java

public static void main(String[] args) 

{ 
    Scanner input = new Scanner(System.in); 

    int x = input.nextInt(); 

    int e =fan(x); 

      System.out.println(e); 
    } 

public static int fan(int e){ 
      int a =1; 
      int b; 
      int c = 0; 

    for (int i=1; i<=e; i++) { 
       b=c; 
       c=b+a; 
       a=b; 
      } 

     return c; 


} 

} 
+0

定義*不工作*。看起來它甚至不會編譯。 –

+3

當你寫「for(i = 1; i Fabinout

+1

也可疑'c = b; c = b + a;' – Ingo

回答

3

這是使用的BigInteger的實現大數字。

public static String fan(int i) { 
    BigInteger a = BigInteger.ZERO; 
    BigInteger b = BigInteger.ONE; 
    if(i==0) return a.toString(); 

    for (int f = 1; f < i; f++) { 
     BigInteger temp = b; 
     b = a.add(b); 
     a = temp; 
    } 
    return b.toString(); 
} 

public static void main(String[] args) 

{ 
    Scanner input = new Scanner(System.in); 

    int x = input.nextInt(); 

    String i = fan(x); 

    System.out.println(i); 
} 
0

斐波那契數列也可遞歸實現。在這種情況下,這將是:

public int fibonacci(int n) { 
    if((n == 0) || (n == 1)) 
     return n; 
    else 
     return(fibonacci(n - 1) + fibonacci(n - 2)); 
} 

和BigIntegers這將是:

public BigInteger fibonacci(int n) { 
    if (n == 0) return BigInteger.ZERO; 
    if (n == 1) return BigInteger.ONE; 
    return fibonacci(n - 1).add(fibonacci(n - 2)); 
} 

明顯迭代算法比遞歸快...