>> Home >> Algoritmy >> Java: Fibonacciho posloupnost

 

Java: Fibonacciho posloupnost

 

Fibonacciho posloupnost je nekonečnou posloupností přirozených čísel, kde každý následující člen, kromě prvních dvou, je vyjádřen výsledkem součtu dvou předcházejících čísel. Tato posloupnost byla popsána matematikem Leonardo Pisano, který je také znám právě jako Fibonacci. Čísla, která se nacházejí v této posloupnosti jsou často nazývána Fibonacciho čísly.

Prvních 20 členů Fibonacciho posloupnosti - 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181

První dva členy jsou dány pevně, jako 0 a 1.

 

F(n) můžeme vyjádřit jako:

F(n) = F(n - 2) + F(n - 1) -> To samozřejmě neplatí pro první dva členy.

Ještě si dovolím odkázat na obrázek z wikipedie.

fibonacciho posloupnost

Po prvním pohledu na definici této posloupnosti je jasné, že by se tento úkon velice snadno řešil pomocí rekurze, což si také ukážeme. Tento algoritmus ale není opravdu moc efektivní, a je časově poměrně náročný - jeho asymptotická složitost se pohybuje v exponenciálním čase. Mnohem kvalitenějšího a efektivnějšího zápisu bychom dosáhli pomocí dynamického programování, ale o tom možná až jindy.

Implementace do Javy:

 

    public static int fibonacci(int n) {
        if(n < 2)
                return n;
        else
            return fibonacci(n - 1) + fibonacci(n - 2);
    }

 

Vytvořili jsme si jednoduchou statickou rekurzivní metodu, která nám vrací celé číslo datového typu int. Pomocí této metody si můžeme ku příkladu vypisovat řadu čísel, které se řídí Fibonacciho posloupností. Kdybychom tedy chtěli vypsat prvních 30 členů Fibonacciho posloupnosti, můžeme to provédst třeba takto.

 

    public static void main(String[] args) {
        for(int i = 0;i<30;i++) {
            System.out.print(fibonacci(i) + " ");
        }
    }

 

Výpis by v tomto případě vypadal takto - 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229

Další informace ohledně Fibonacciho posloupnosti najdete třeba na české wikipedii.

 

pridej.cz Přidat.eu záložku

 

Diskuze k článku


 

  1. Lada napsal(a):
    2009-11-28 14:29:23

    nevi nekdo jak by se daly tyto cisla ulozit do pole?? ja kdyz se pokousim to tam nejak nacpat a pak ho vypisu tak me to pokazde vypisuje nesmyslne cisla... delam co v C++ ale to je podobne...:-)

 

Přidat nový komentář