Séquence de Fibonacci récursive en Java

Rashmi Patidar 12 octobre 2023
  1. Séquence de Fibonacci
  2. Récursion
  3. Séquence de Fibonacci récursive en Java
Séquence de Fibonacci récursive en Java

Séquence de Fibonacci

Une suite qui est formée par l’addition des deux derniers nombres à partir de 0 et 1. Si l’on veut trouver le nième élément, alors le nombre est trouvé par l’addition de (n-1) et (n-2) termes, où n doit être supérieur à 0.

Récursion

La récursivité est le processus où la même fonction ou procédure définitive s’appelle plusieurs fois jusqu’à ce qu’elle rencontre une condition de fin. Si nous ne spécifions pas de condition de fin, la méthode entrera dans un état de boucle infinie.

Séquence de Fibonacci récursive en Java

Dans le code ci-dessous, la méthode main() appelle une fonction statique getFibonacciNumberAt() définie dans la classe. La fonction prend un paramètre qui définit un nombre, où nous voulons évaluer le nombre de Fibonacci. La fonction a une vérification principale qui renverra 0 ou 1 lorsqu’elle remplit la condition souhaitée. Sinon, la fonction s’appellera à nouveau en décrémentant le paramètre qui lui est passé.

package recursiveFibonacci;

public class RecursiveFibonacciSequence {
  public static void main(String[] args) {
    int fibonacciNumber = getFibonacciNumberAt(6);
    System.out.println(fibonacciNumber);
  }

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

Production:

8

L’évaluation détaillée peut être vue ci-dessous:

getFibonacciNumberAt(6) = getFibonacciNumberAt(5) + getFibonacciNumberAt(4); //5+3=8
getFibonacciNumberAt(5) = getFibonacciNumberAt(4) + getFibonacciNumberAt(3); //3+2=5
getFibonacciNumberAt(4) = getFibonacciNumberAt(3) + getFibonacciNumberAt(2); //2+1=3
getFibonacciNumberAt(3) = getFibonacciNumberAt(2) + getFibonacciNumberAt(1); //1+1=2
getFibonacciNumberAt(2) = getFibonacciNumberAt(1) + getFibonacciNumberAt(0); //1+0=1
If, getFibonacciNumberAt(1) = 1;
And getFibonacciNumberAt(0) = 0;

Nous pouvons modifier le programme ci-dessus pour imprimer une série jusqu’au nombre souhaité.

package recursiveFibonacci;

public class RecursiveFibonacci {
  public static void main(String[] args) {
    int maxCount = 10;
    for (int i = 0; i <= maxCount; i++) {
      int fibonacciNumber = printFibonacci(i);
      System.out.print(" " + fibonacciNumber);
    }
  }

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

Production:

0 1 1 2 3 5 8 13 21 34 55
Noter
Pour le calcul de grands nombres, nous pouvons utiliser la classe BigInteger en Java. Le processus de récursivité sera complexe pour les plus grands nombres; par conséquent, le temps de calcul de ces nombres sera également plus long.
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Article connexe - Java Math