2016-12-22 8 views
1

私は、Javaに新しいですし、これは私が何をすべきかであるの合計:次のようにフィボナッチ数列:すべての数値

シーケンスが行く:1、1、2、3、5、8、13、21、 ....等

シーケンス内の次の数は、前の2数

の和がN、ユーザー入力をすることができ数プログラムを作成され、その後、シーケンスのn番目の数を算出しますシーケンス内の数字の合計。

例えば、第五の数は5であり、その数に加算までは私の質問は、残りの部分とは異なり、私のコードも異なっているので、これは重複しない12

です。これまで私が行ってきたことは次のとおりです。

public class fibonnacifinal { 

    public static void main(String args[]) { 
     System.out.println("Enter number upto which Fibonacci series to print: "); 
     int number = new Scanner(System.in).nextInt(); 
     System.out.println("\n Fibonacci number at location " + number + " is ==> " + (fibonacciLoop(number) + "")); 
    } 

    public static int fibonacciLoop(int number) { 
     if (number == 1 || number == 2) { 
      return 1; 
     } 

     int fibo1 = 1, fibo2 = 1, fibonacci = 1; 
     for (int i = 3; i <= number; i++) { 
      fibonacci = fibo1 + fibo2; // Fibonacci number is sum of previous two Fibonacci number 
      fibo1 = fibo2; 
      fibo2 = fibonacci; 
     } 
     return fibonacci; // Fibonacci number 
    } 
} 

問題は私が追加して印刷する数字を得ることができないということです。たとえば、ユーザーが7を入力した場合、7番目の数字が13であると言うことができますが、その数が33になるまでその合計を印刷することはできません。

+0

の結果を合計する必要がありますフィボナッチ数の合計を取得しようとする試み... –

+0

コードと@TimothyTruckleを編集します。 –

+1

@JohnSmith *「どのようにするかわからない」*多分あなたのやり方を書き留めることから始めます紙の上で、一歩一歩してください... –

答えて

2

i = 3から始めると、あなたのfibonacciLoop(int number)

int sum = 2; 
for (int i = 3; i <= number; i++) { 
    fibonacci = fibo1 + fibo2; 
    fibo1 = fibo2; 
    fibo2 = fibonacci; 
    sum = sum + fibonacci; 
} 
System.out.println("Sum: " +sum); //print before return fibonacci 

注意、すぐint sumは大きなフィボナッチ数のオーバーフローします。

Hereは、あなたのための完全な機能コードです!

+0

ありがとうあなたはあなたの助けにあまりにも! –

1

すでにフィボナッチ数を返しています。

フィボナッチ数+合計を返す場合は、メソッドタイプをペアに変更する必要があります。

あなただけの合計を印刷したい場合は、そのメソッドに次の行を追加します。

public static int fibonacciLoop(int number) { 
    int sum = 0; 
    if (number == 1) { // 1 
     System.out.println("1"); 
    } else if (number == 2) { // 1, 1 
     System.out.println("2"); 
    } else { 
     sum = 2; 
    } 
    ... 
    for (int i = 3; i <= number; i++) { 
     ... 
     sum += fibonacci; 
    } 
    System.out.println(sum); 
    ... 
} 
+0

ありがとうございました! –

1

あなただけの各フィボナッチ私が見ることができないあなたのコードで

public class Fibonnacifinal { 
     public static void main(String args[]) { 
      System.out 
        .println("Enter number upto which Fibonacci series to print: "); 
      int number = new Scanner(System.in).nextInt(); 
      System.out.println("\n Sum of Fibonacci numbers at location " + number 
        + " is ==> " + (fibonacciLoop(number) + "")); 
     } 

     public static int fibonacciLoop(int number) { 
      // Fib(1) = 1, returns 1 
      // Fib(2) = 2, returns 2 which is the sum of Fib(1) + Fib(1) 
      if (number < 3) { 
       return number; 
      } 

      int sum = 2; // 2 is the sum till Fib(2) 
      int fibo1 = 1, fibo2 = 1, fibonacci = 1; 
      for (int i = 3; i <= number; i++) { 
       fibonacci = fibo1 + fibo2; 
       sum += fibonacci; 
       fibo1 = fibo2; 
       fibo2 = fibonacci; 
      } 

      return sum; 
     } 

    } 
+0

ありがとうございました! –

+0

あなたは彼女に魚を与えました。彼女に次のものをあげるか、彼女に釣りを学ばせてもらいたいですか? –

+0

あなたは非常に歓迎しています。あなたのコードからわかるように、Java [命名規則](http://www.javatpoint.com/java-naming-conventions)を見直すことをお勧めします。クラス名の最初の文字は大文字にする必要があります、 あなたはいくつかのアルゴリズムを研究するかもしれませんが、あなたの心を伸ばすために[coursera](https://www.coursera.org/specializations/algorithms)をお勧めします。 –

関連する問題