Générer la suite de Fibonacci en Java : boucles for, while et récursivité
Qu'est-ce que la suite de Fibonacci en Java ?
La suite de Fibonacci est une séquence où chaque nombre est la somme des deux précédents. En Java, la suite commence traditionnellement par 0 et 1 :
0, 1, 1, 2, 3, 5, 8, 13, 21, …
Au-delà de son intérêt mathématique, la suite de Fibonacci est fréquemment utilisée en analyse d'algorithmes — par exemple pour estimer le temps d'exécution de procédures récursives et dans le calcul du PGCD.
- Implémentation avec boucle for
- Implémentation avec boucle while
- Implémentation récursive
- Exemple avec saisie utilisateur
Suite de Fibonacci avec une boucle for
// Utilisation d'une boucle for
public class ExempleFibonacci {
public static void main(String[] args) {
int maxNombre = 10; // Nombre de termes
int precedent = 0;
int courant = 1;
System.out.print("Suite de Fibonacci de " + maxNombre + " nombres :");
for (int i = 1; i <= maxNombre; i++) {
System.out.print(precedent + " ");
int suivant = precedent + courant;
precedent = courant;
courant = suivant;
}
}
}
Sortie :
Suite de Fibonacci de 10 nombres : 0 1 1 2 3 5 8 13 21 34
Logique :
- Initialiser
precedent = 0etcourant = 1. - Boucler
maxNombrefois, afficherprecedentet mettre à jour les valeurs.
Suite de Fibonacci avec une boucle while
// Utilisation d'une boucle while
public class FibonacciWhileExemple {
public static void main(String[] args) {
int maxNombre = 10;
int precedent = 0;
int courant = 1;
System.out.print("Suite de Fibonacci de " + maxNombre + " nombres :");
int i = 1;
while (i <= maxNombre) {
System.out.print(precedent + " ");
int suivant = precedent + courant;
precedent = courant;
courant = suivant;
i++;
}
}
}
Sortie :
Suite de Fibonacci de 10 nombres : 0 1 1 2 3 5 8 13 21 34
Suite de Fibonacci basée sur la saisie utilisateur
import java.util.Scanner;
public class FibonacciSaisieUtilisateur {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Entrez le nombre de termes : ");
int maxNombre = scanner.nextInt();
int precedent = 0;
int courant = 1;
System.out.print("Suite de Fibonacci de " + maxNombre + " nombres :");
for (int i = 1; i <= maxNombre; i++) {
System.out.print(precedent + " ");
int suivant = precedent + courant;
precedent = courant;
courant = suivant;
}
scanner.close();
}
}
Logique : La même logique itérative s'applique, mais le nombre de termes est fourni par l'utilisateur.
Suite de Fibonacci par récursivité
// Implémentation récursive
public class FibonacciRecursif {
public static int fibonacci(int n) {
if (n == 0) return 0;
if (n == 1 || n == 2) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
public static void main(String[] args) {
int maxNombre = 10;
System.out.print("Suite de Fibonacci de " + maxNombre + " nombres : ");
for (int i = 0; i < maxNombre; i++) {
System.out.print(fibonacci(i) + " ");
}
}
}
Sortie :
Suite de Fibonacci de 10 nombres : 0 1 1 2 3 5 8 13 21 34
Explication de la récursivité :
- Cas de base :
n == 0retourne 0 ;n == 1 || n == 2retourne 1. - Cas récursif :
fibonacci(n) = fibonacci(n-1) + fibonacci(n-2). - Chaque appel se divise en deux sous-appels, reflétant la définition classique.
Bien que la récursivité offre une expression mathématique élégante, elle a une complexité exponentielle pour de grands n. Utilisez la mémoïsation ou les méthodes itératives pour du code critique en performance.
Java
- Java Hello World : Votre premier programme
- Variables et littéraux en Java : Guide complet
- Comprendre les expressions, instructions et blocs en Java
- Classes et objets en Java : Guide pratique
- Classes et méthodes abstraites en Java : guide complet
- Maîtriser les classes imbriquées et internes en Java : types, exemples et bonnes pratiques
- Java throw vs throws : maîtriser la gestion d'exceptions avec exemples pratiques
- Maîtriser l'autoboxing et l'unboxing Java : Exemples pratiques et bonnes pratiques
- Programme Java pour déterminer si un nombre est premier