Program série Fibonacci v Jave pomocou Loops & Rekurzia

Obsah:

Anonim

Čo je séria Fibonacci?

V sérii Fibonacci je ďalšie číslo súčtom predchádzajúcich dvoch čísel. Prvé dve čísla Fibonacciho série sú 0 a 1.

Fibonacciho čísla sa významne používajú pri výpočtovej run-time štúdii algoritmu na určenie najväčšieho spoločného deliteľa dvoch celých čísel. V aritmetike je Wythoffovo pole nekonečná matica čísel vyplývajúca z Fibonacciho sekvencie.

The Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21,… 

Java kód pomocou For Loop

// Použitie pre slučkuverejná trieda FibonacciPriklad {public static void main (reťazec [] args){// Nastavte ho na požadovaný počet prvkov v sérii Fibonacciint maxNumber = 10;int predchadzajuce cislo = 0;int nextNumber = 1;System.out.print ("Fibonacciho séria čísel" + maxNumber + ":");pre (int i = 1; i <= maxNumber; ++ i){System.out.print (predchádzajúce číslo + "");/ * Pri každej iterácii priraďujeme druhé číslo* k prvému číslu a priradeniu súčtu posledných dvoch* čísla k druhému číslu* /int suma = predchadzajuce cislo + dalsie cislo;previousNumber = nextNumber;nextNumber = suma;}}}
Výkon:
Fibonacci Series of 10 numbers:0 1 1 2 3 5 8 13 21 34
Logika programu:
  • previousNumber sa inicializuje na 0 a nextNumber sa inicializuje na 1
  • For Loop iterates through maxNumber
    • Zobraziť predchádzajúce číslo
    • Vypočíta súčet predchádzajúceho čísla a nasledujúceho čísla
    • Aktualizuje nové hodnoty previousNumber a nextNumber

Kód Java pomocou funkcie While Loop

Sériu Fibonacci môžete tiež vygenerovať pomocou a

While slučka v Jave.
// Používanie funkcie While Loopverejná trieda FibonacciWhileExample {public static void main (reťazec [] args){int maxNumber = 10, previousNumber = 0, nextNumber = 1;System.out.print ("Fibonacciho séria čísel" + maxNumber + ":");int i = 1;while (i <= maxNumber){System.out.print (predchádzajúce číslo + "");int suma = predchadzajuce cislo + dalsie cislo;previousNumber = nextNumber;nextNumber = suma;i ++;}}}
Výkon:
Fibonacci Series of 10 numbers:0 1 1 2 3 5 8 13 21 34

Jediným rozdielom v logike programu je použitie WHILE Loop na tlač Fibonacciho čísel

Séria Fibonacci založená na vstupe používateľa

// séria fibonacci založená na vstupe používateľaimport java.util.Scanner;verejná trieda FibonacciPriklad {public static void main (reťazec [] args){int maxNumber = 0;int predchadzajuce cislo = 0;int nextNumber = 1;System.out.println ("Koľko čísel chcete vo Fibonacci:");Skener skener = nový skener (System.in);maxNumber = scanner.nextInt ();System.out.print ("Fibonacciho séria čísel" + maxNumber + ":");pre (int i = 1; i <= maxNumber; ++ i){System.out.print (predchádzajúce číslo + "");/ * Pri každej iterácii priraďujeme druhé číslo* k prvému číslu a priradeniu súčtu posledných dvoch* čísla k druhému číslu* /int suma = predchadzajuce cislo + dalsie cislo;previousNumber = nextNumber;nextNumber = suma;}}}
Logika programu:

Logika je rovnaká ako predtým. Namiesto pevného kódovania počtu prvkov, ktoré sa majú zobraziť v sérii Fibonacci, je používateľ požiadaný o napísanie čísla.

Java kód pomocou rekurzie

// Použitie rekurzieverejná trieda FibonacciCalc {public static int fibonacciRecursion (int n) {if (n == 0) {návrat 0;}if (n == 1 || n == 2) {návrat 1;}spätný fibonacciRecursion (n-2) + fibonacciRecursion (n-1);}public static void main (String args []) {int maxNumber = 10;System.out.print ("Fibonacciho séria čísel" + maxNumber + ":");pre (int i = 0; i  Výkon: 
Fibonacci Series of 10 numbers: 0 1 1 2 3 5 8 13 21 34
Logika programu:

Rekurzívna funkcia je taká, ktorá má schopnosť sama seba nazývať.

fibonacciRecursion ():

  1. Vezme vstupné číslo. Skontroluje 0, 1, 2 a vráti 0, 1, 1, pretože Fibonacciho postupnosť začína na 0, 1, 1.
  2. Keď je vstup n> = 3, funkcia sa bude nazývať rekurzívne. Hovor sa uskutoční dvakrát. Pozrime sa na príklad pre vstup 4.
fibonacciRecursion (4)It will recursively call fibonacciRecursion function for values 2 and 3fibonacciRecursion (2) \\ call for value 0 and 1fibonacciRecursion (0) = 0fibonacciRecursion (1) = 1fibonacciRecursion (3) \\ It will call for 1 and 2fibonacciRecursion (1) = 1fibonacciRecursion (2) \\ It will call for 0 and 1fibonacciRecursion (0) = 0fibonacciRecursion (1) = 1

Teraz sa pridá výsledok 0 + 1 + 1 + 0 + 1 = 3