2014-02-19 51 views
0

任何人都可以看看我的java代碼,並告訴我如何修復我的代碼。問題在下面。我真的很感謝所有幫助:)項目中的歐拉#2

public class problem 
{ 
    public static void main (String args []){ 
     int a = 0; 
     int b = 1; 
     problem(); 
    } 

    public static int problem(){ 

     int c = a + b; 
     if (c>10){ 
      System.out.println(c); 
      return c; 
     } 
     int a = b; 
     int b = c; 
     problem(); 
    } 
} 

在Fibonacci序列中的每個新名詞是通過將前兩個方面產生。用1和2開始,前10項將是:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

通過考慮在Fibonacci序列中,其值不超過4萬元計算,發現即使值項的總和。

+0

你沒有你既然你是不是很在的Java經驗的主要方法 –

+2

外聲明youvariables,我想指出的是,Java是不是解決項目歐拉問題的最佳工具,解決項目歐拉問題並不是學習Java的最佳方式。如果您的目標是要解決編程問題,請使用Python或Ruby。如果你的目標是學習Java,一個更實用的項目可能是一個更好的方法。 –

+0

你的類也是你的方法(在大小寫和名字)和'void main()'通常不在同一個類中? – Brandon

回答

1

有幾個問題。如果您希望所有方法都可以訪問它,則ab應該是靜態成員變量。 problem()返回一個int,但只是有時。這並不是真的需要返回任何東西,所以我使它無效。

該版本將打印出大於10的第一個斐波納契數,然後停止,但您希望第一個大於400萬,並且您想要數字的總和。所以我們需要跟蹤這一點。

而且你的初始值是0 1斐波那契序列應該開始,1和2

而在去年,我們只是想總結偶數,我們可以通過檢查做到這一點,如果是提醒0時,除以二。

public class problem 
{ 
    private static int a = 0; 
    private static int b = 0; 
    private static int sum = 0; 

    public static void main (String args []){ 
     a = 1;  
     b = 2; 
     problem(); 
     System.out.println("Sum = " + sum); 
    } 

    public static void problem(){ 
     if (b % 2 == 0) 
     { 
      sum = sum + b; 
     } 

     int c = a + b; 
     if (c>=4000000) 
     { 
      return; 
     } 

     a = b; 
     b = c; 
     problem(); 
    } 
}