2016-12-22 2 views
1

Je suis nouveau à Java, ce qui est ce que je dois faire:Fibonacci Séquence: Somme de tous les numéros

La séquence est la suivante: 1, 1, 2, 3, 5, 8, 13, 21, .... Etc

le nombre suivant dans la séquence est la somme du nombre 2

Ajouter un programme précédent qui permet à l'entrée de l'utilisateur un certain nombre, n, et calcule alors le nombre n-ième de la séquence et la somme des nombres dans la séquence.

Par exemple, le numéro 5 est 5 et la somme jusqu'à ce nombre est de 12

Ce n'est pas un doublon que ma question est différent du reste et mon code est également différent. Voici ce que je l'ai fait jusqu'à présent:

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 
    } 
} 

Le problème que j'ai est que je ne peux pas obtenir les chiffres pour ajouter et imprimer. Par exemple, si l'utilisateur entre 7, je peux l'obtenir pour dire que le 7ème numéro est 13 mais je ne peux pas l'obtenir pour imprimer cette somme jusqu'à ce nombre est 33.

+0

Dans votre code, je ne vois pas toute tentative pour obtenir la somme des nombres de fibonacci ... –

+0

Je vais éditer le code et @TimothyTruckle Je n'ai aucune idée de comment –

+1

@JohnSmith * "Je n'ai aucune idée de comment" * peut-être vous commencez par écrire comment vous le feriez le faire sur papier, pas à pas ... –

Répondre

2

Comme vous commencez par i = 3 vous pouvez utiliser ce qui suit à l'intérieur votre 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 

note, bientôt int sum débordera pour un grand nombre de fibonacci.

Here est un code fonctionnel complet pour vous!

+0

Remerciements vous tellement pour votre aide! –

1

Vous avez déjà renvoyé le numéro Fibonacci.

Si vous voulez retourner les deux: numéro de Fibonacci + la somme, vous devez changer le type de méthode en paire.

Si vous voulez juste imprimer la somme, ajoutez les lignes suivantes dans cette méthode:

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

Merci beaucoup pour votre aide! –

1

vous avez juste besoin de résumer le résultat de chaque fibonacci

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

Merci beaucoup pour votre aide! –

+0

Alors vous lui avez donné un poisson. Voulez-vous lui donner le prochain ou voulez-vous qu'elle apprenne la pêche? –

+0

vous êtes très bienvenu John, et je vous recommande de passer en revue les java [conventions de nommage] (http://www.javatpoint.com/java-naming-conventions) comme je vois de votre code, la première lettre de nom de classe doit être en majuscule , aussi vous pouvez étudier quelques algorithmes, je recommande [coursera] (https://www.coursera.org/specializations/algorithms) pour aider à étirer votre esprit. –