Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

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 = 0 en huidig = 1.
  • Herhaal maxAantal keer, print vorige en 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:

  1. Basismogelijkheden: n == 0 geeft 0 terug; n == 1 || n == 2 geeft 1 terug.
  2. Recursieve stap: fibonacci(n) = fibonacci(n-1) + fibonacci(n-2).
  3. 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

  1. Java Hello World: je eerste programma
  2. Java-variabelen en literals: een uitgebreide gids
  3. Java Expressies, Statements en Blokken begrijpen
  4. Java klassen en objecten: een praktische gids
  5. Java abstracte klassen en methoden: een uitgebreide gids
  6. Java geneste en inner classes meesteren: typen, voorbeelden en best practices
  7. Java throw vs throws: Exception Handling meesteren met praktische voorbeelden
  8. Java Autoboxing en Unboxing: Praktische voorbeelden en best practices
  9. Java-programma om te bepalen of een getal priem is
  10. Java-programma om Armstrong-getallen te identificeren met for-lus
  11. Een String omkeren in Java met recursie – Stapsgewijze handleiding