Fibonacci-reeks genereren in Java: For, While en Recursieve voorbeelden
Wat is de Fibonacci-reeks in Java?
De Fibonacci-reeks is een reeks waarbij elk getal de som is van de twee voorgaande. In Java begint de reeks traditioneel met 0 en 1:
0, 1, 1, 2, 3, 5, 8, 13, 21, …
Naast de wiskundige interesse wordt de Fibonacci-reeks vaak gebruikt in algoritme-analyse—bijvoorbeeld bij het schatten van de runtime van recursieve procedures en het berekenen van de grootste gemene deler.
- For-lus implementatie
- While-lus implementatie
- Recursieve implementatie
- Interactief invoervoorbeeld
Fibonacci-reeks met een For-lus
// Met een for-lus public class FibonacciVoorbeeld { public static void main(String[] args) { int maxAantal = 10; // Aantal termen int vorige = 0; int huidig = 1; System.out.print("Fibonacci-reeks van " + maxAantal + " getallen:"); for (int i = 1; i <= maxAantal; i++) { System.out.print(vorige + " "); int volgende = vorige + huidig; vorige = huidig; huidig = volgende; } } } Uitvoer:
Fibonacci-reeks van 10 getallen:0 1 1 2 3 5 8 13 21 34
Logica:
- Initialiseer
vorige = 0enhuidig = 1. - Herhaal
maxAantalkeer, printvorigeen werk waarden bij.
Fibonacci-reeks met een While-lus
// Met een while-lus public class FibonacciWhileVoorbeeld { public static void main(String[] args) { int maxAantal = 10; int vorige = 0; int huidig = 1; System.out.print("Fibonacci-reeks van " + maxAantal + " getallen:"); int i = 1; while (i <= maxAantal) { System.out.print(vorige + " "); int volgende = vorige + huidig; vorige = huidig; huidig = volgende; i++; } } } Uitvoer:
Fibonacci-reeks van 10 getallen:0 1 1 2 3 5 8 13 21 34
Fibonacci-reeks gebaseerd op gebruikersinvoer
import java.util.Scanner; public class FibonacciGebruikersInvoer { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Voer het aantal termen in: "); int maxAantal = scanner.nextInt(); int vorige = 0; int huidig = 1; System.out.print("Fibonacci-reeks van " + maxAantal + " getallen:"); for (int i = 1; i <= maxAantal; i++) { System.out.print(vorige + " "); int volgende = vorige + huidig; vorige = huidig; huidig = volgende; } scanner.close(); } } Logica: De dezelfde iteratieve logica geldt, maar het aantal termen wordt door de gebruiker geleverd.
Fibonacci-reeks met recursie
// Recursieve implementatie public class FibonacciRecursie { 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 maxAantal = 10; System.out.print("Fibonacci-reeks van " + maxAantal + " getallen: "); for (int i = 0; i < maxAantal; i++) { System.out.print(fibonacci(i) + " "); } } } Uitvoer:
Fibonacci-reeks van 10 getallen: 0 1 1 2 3 5 8 13 21 34
Recursie uitgelegd:
- Basismogelijkheden:
n == 0geeft 0 terug;n == 1 || n == 2geeft 1 terug. - Recursieve stap:
fibonacci(n) = fibonacci(n-1) + fibonacci(n-2). - Elke aanroep splitst in twee sub-aanroepen, wat de klassieke definitie weerspiegelt.
Hoewel recursie een schone wiskundige expressie biedt, heeft het exponentiële tijdscomplexiteit voor grote n. Gebruik memoïsatie of iteratieve methoden voor prestatie-kritische code.
Java
- Java Hello World: je eerste programma
- Java-variabelen en literals: een uitgebreide gids
- Java Expressies, Statements en Blokken begrijpen
- Java klassen en objecten: een praktische gids
- Java abstracte klassen en methoden: een uitgebreide gids
- Java geneste en inner classes meesteren: typen, voorbeelden en best practices
- Java throw vs throws: Exception Handling meesteren met praktische voorbeelden
- Java Autoboxing en Unboxing: Praktische voorbeelden en best practices
- Java-programma om te bepalen of een getal priem is
- Java-programma om Armstrong-getallen te identificeren met for-lus
- Een String omkeren in Java met recursie – Stapsgewijze handleiding