Fibonacci-Folge in Java generieren: For-, While- und Rekursions-Beispiele
Was ist die Fibonacci-Folge in Java?
0, 1, 1, 2, 3, 5, 8, 13, 21, …
Abgesehen von ihrer mathematischen Faszination wird die Fibonacci-Folge häufig in der Algorithmenanalyse verwendet – beispielsweise zur Abschätzung der Laufzeit rekursiver Verfahren und zur Berechnung des größten gemeinsamen Teilers.
- For-Schleifen-Implementierung
- While-Schleifen-Implementierung
- Rekursive Implementierung
- Interaktives Eingabe-Beispiel
Fibonacci-Folge mit For-Schleife
// Mit for-Schleife
public class FibonacciBeispiel {
public static void main(String[] args) {
int anzahlGlieder = 10; // Anzahl der Glieder
int vorherige = 0;
int aktuelle = 1;
System.out.print("Fibonacci-Folge von " + anzahlGlieder + " Zahlen:");
for (int i = 1; i <= anzahlGlieder; i++) {
System.out.print(vorherige + " ");
int naechste = vorherige + aktuelle;
vorherige = aktuelle;
aktuelle = naechste;
}
}
}
Ausgabe:
Fibonacci-Folge von 10 Zahlen: 0 1 1 2 3 5 8 13 21 34
Logik:
- Initialisieren Sie
vorherige = 0undaktuelle = 1. - Schleife
anzahlGlieder-mal, geben Sievorherigeaus und aktualisieren Sie die Werte.
Fibonacci-Folge mit While-Schleife
// Mit while-Schleife
public class FibonacciWhileBeispiel {
public static void main(String[] args) {
int anzahlGlieder = 10;
int vorherige = 0;
int aktuelle = 1;
System.out.print("Fibonacci-Folge von " + anzahlGlieder + " Zahlen:");
int i = 1;
while (i <= anzahlGlieder) {
System.out.print(vorherige + " ");
int naechste = vorherige + aktuelle;
vorherige = aktuelle;
aktuelle = naechste;
i++;
}
}
}
Ausgabe:
Fibonacci-Folge von 10 Zahlen: 0 1 1 2 3 5 8 13 21 34
Fibonacci-Folge basierend auf Benutzereingabe
import java.util.Scanner;
public class FibonacciBenutzereingabe {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Geben Sie die Anzahl der Glieder ein: ");
int anzahlGlieder = scanner.nextInt();
int vorherige = 0;
int aktuelle = 1;
System.out.print("Fibonacci-Folge von " + anzahlGlieder + " Zahlen:");
for (int i = 1; i <= anzahlGlieder; i++) {
System.out.print(vorherige + " ");
int naechste = vorherige + aktuelle;
vorherige = aktuelle;
aktuelle = naechste;
}
scanner.close();
}
}
Logik: Dieselbe iterative Logik, aber die Gliederanzahl wird vom Benutzer vorgegeben.
Fibonacci-Folge mit Rekursion
// Rekursive Implementierung
public class FibonacciRekursion {
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 anzahlGlieder = 10;
System.out.print("Fibonacci-Folge von " + anzahlGlieder + " Zahlen: ");
for (int i = 0; i < anzahlGlieder; i++) {
System.out.print(fibonacci(i) + " ");
}
}
}
Ausgabe:
Fibonacci-Folge von 10 Zahlen: 0 1 1 2 3 5 8 13 21 34
Rekursion erklärt:
- Basisfälle:
n == 0gibt 0 zurück;n == 1 || n == 2gibt 1 zurück. - Rekursiver Fall:
fibonacci(n) = fibonacci(n-1) + fibonacci(n-2). - Jeder Aufruf spaltet sich in zwei Unteraufrufe, was der klassischen Definition entspricht.
Während Rekursion einen sauberen mathematischen Ausdruck bietet, verursacht sie für große n exponentielle Laufzeit. Nutzen Sie Memoisierung oder iterative Methoden für performance-kritischen Code.
Java
- Java Hello World: Ihr erstes Programm
- Java Variablen und Literale: Umfassender Leitfaden
- Java Ausdrücke, Anweisungen und Blöcke verstehen
- Java Klassen und Objekte: Praktischer Leitfaden
- Java abstrakte Klassen und Methoden: Ein umfassender Leitfaden
- Java verschachtelte und innere Klassen meistern: Typen, Beispiele und Best Practices
- Java throw vs. throws: Exception Handling mit praktischen Beispielen meistern
- Java Autoboxing und Unboxing meistern: Praktische Beispiele und Best Practices
- Java-Programm zur Prüfung, ob eine Zahl prim ist
- Java-Programm zur Identifikation von Armstrong-Zahlen mit For-Schleife