2012-10-07 64 views
3

如何在不使用「if」的情況下在int斐波那契語(int n)中編寫代碼如下所示Java recursive Fibonacci sequence? 我試圖寫這一點,但它是錯誤的: 因爲在此程序中的列表將是1 1 2 3 5 8而不是0 1 1 2 3 5 8如何在不使用if語句的情況下編寫斐波那契Java程序

這裏是我試圖寫程序:

public class Fibonacci 
{ 
    public static void main(String[] args) 
    { 
     int f = 0; 
     int g = 1; 

     for(int i = 1; i <= 10; i++) 
     { 
      f = f + g; 
      g = f - g; 
      System.out.print(f + " "); 
     } 

     System.out.println(); 
    } 
} 
+0

下面是我試圖編寫的程序:公共類Fibonacci public static void main(String [] args){int 0; 0; 0; 0; 0; int g = 1;對於(int i = 1; i <= 10; i ++){ f = f + g; g = f-g; System.out.print(f +「」); } System.out.println(); } } –

+0

您可以編輯您的帖子以添加代碼.. –

回答

9

你的程序是完全正確的;所有你需要改變的是打印語句的位置:

public static void main(String[] args) { 
    int f = 0; 
    int g = 1; 

    for(int i = 1; i <= 10; i++) 
    { 
    System.out.print(f + " "); 
    f = f + g; 
    g = f - g; 
    } 

    System.out.println(); 
} 

另外,打印g而不是f

4

沒有if語句這裏:

public static void printFib(final int N) { 
    int f0 = 0; 
    int f1 = 1; 

    for (int i = 0; i < N; ++i) { 
     System.out.println(f0); 
     final int temp = f1; 
     f1 += f0; 
     f0 = temp; 
    } 
} 
11

純公式計算Fibonacci數:

public double getFibonacci(int n) { 
    double f1 = Math.pow(((1 + Math.sqrt(5))/2.0), n); 
    double f2 = Math.pow(((1 - Math.sqrt(5))/2.0), n); 

    return Math.floor((f1 - f2)/Math.sqrt(5)); 
} 

希望這有助於...

+2

+1讓我知道這個 – exexzian

+0

的數學公式@sansix,謝謝,很高興幫助! –

2

這裏是我遵循一個,它很短,確實不使用if

public class ShortFibboCode{ 

    public static void main(String a[]) { 
     int f = 0; 
     int numUpto = 10; // number of series upto - change accordingly 
     for(int t = 1; f < numUpto; t = f + (f = t)) 
      System.out.print((f + " "); 
     } 
} 
+2

't = f +(f = t)'讓我頭疼。 –

+0

@ Code-Guru它簡單地將兩個陳述/步驟過程合併爲一個 – exexzian

+0

@sanix是的,我知道了......經過一點努力。 –