Ziel dieses Artikels war, zu zeigen, wie man in Java grundsätzlich einfache Algorithmen implementieren kann und wie dies anhand des Beispiels von Fibonacci-Zahlen aussieht. Fibonacci rekursiv: fib(n) Eine Besonderheit der Fibonacci-Zahlen ist, daß deren Ermittlung mit Hilfe eines rekursiven Algorithmus außergewöhnlich einfach ist, mit der Besonderheit, daß ein solcher Algorithmus bereits bei relativ kleinen Zahlen für praktische Zwecke unbrauchbar langsam wird. Um dies zu verdeutlichen, implementieren wir einen rekursiven Algorithmus, der uns die n. Fibonacci-Zahl liefert, in dem er sich selbst zweimal aufruft (mit n-1 und n-2) und diese Summe zurückgibt. Fibonacci-Folge - Java Online Coaching. Wir müssen dazu noch den Anker implementieren, nämlich daß die ersten beiden Fibonacci-Zahlen jeweils die eins sind (und die nullte die Null) - negative Argumente interpretieren wir der Einfachheit wegen einfach zur Null um: public static long fib(final int n) { if (n <= 2) { return (n > 0)? 1: 0;} return fib(n - 1) + fib(n - 2);} So einfach und smart dieser Algorithmus auch aussehen mag: wenn Sie damit herumspielen, werden Sie feststellen, daß die Berechnung z. schon für die fünfzigste Fibonacci-Zahl ewig lange dauert.
INT_1: INT_0;} BigInteger fib1 = INT_0; BigInteger fib2 = INT_1; final BigInteger newFib = (fib2); Jetzt können wir auch riesige Fibonacci-Zahlen schnell berechnen: (fib(1000)); ergibt in Sekundenschnelle: 43466557686937456435688527675040625802564660517371780402481729089536555417949051 89040387984007925516929592259308032263477520968962323987332247116164299644090653 3187938298969649928516003704476137795166849228875 Und bei der 1000. Fibonacci folge java 2. Fibonacci-Zahl ist mit diesem Algorithmus noch lange nicht Schluß. Viel Spaß beim Experimentieren! Ein weiterer Artikel, der zeigt, wie man in Java einfache Algorithmen programmieren kann, behandelt das Thema Primzahltest.
package recursiveFibonacci; public class RecursiveFibonacci { int maxCount = 10; for (int i = 0; i <= maxCount; i++) { int fibonacciNumber = printFibonacci(i); (" " + fibonacciNumber);}} public static int printFibonacci(int n) { return printFibonacci(n - 1) + printFibonacci(n - 2);}} Ausgabe: 0 1 1 2 3 5 8 13 21 34 55 Hinweis Zur Berechnung größerer Zahlen können wir die Klasse BigInteger in Java verwenden. Der Rekursionsprozess ist für größere Zahlen komplex. Java Fibonacci Zahlen. daher wird auch die Rechenzeit für solche Zahlen länger sein. Verwandter Artikel - Java Math Mod von negative Zahlen in Java Methode zur Berechnung der Fakultät in Java Ermitteln des Quadrats eines double-Werts in Java Doppelte Division in Java
Diese Variable ist vom Typ long, weil wir am Ende sehr hohe Fibonacci-Zahlen erhalten und Integer mit einer maximalen Kapazität von 2147483647 nicht ausreicht. Anschließend wird das Array mit eben dieser Länge definiert. Java: Fibonacci-Folge | Tobias Fonfara. Die ersten beiden Fibonacci-Zahlen (0 und 1) legen wir bereits fest. Als nächstes verbauen wir unsere Formel von oben in den Schleifenkörper der for-Schleife. Die Schleifenvariable beginnt bei 2 und läuft damit 48 Mal (die ersten beiden Fibonaccis haben wir ja bereits dem Array hinzugefügt). Auf diese Weise wird das Array mit den restlichen Fibonacci-Zahlen von der zweiten bis zur fünfzigsten gefüllt. Hier noch der Output: for(int i = 0; i <; i++){ (fibonacci[i] + ", ");} 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, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049 Algorithmus #2: Fibonacci-Zahl liefern Noch spannender ist ein Algorithmus, der uns gezielt eine bestimmte Zahl aus der Fibonacci-Reihe berechnet.
Bevor fib(5) bestimmt werden kann, werden die Aufrufe fib(4) und fib(3) abgearbeitet, wobei z. B. fib(3) erst wieder fib(2) und fib(1) aufrufen, die aber jeweils 1 zurckgeben. Wir knnen uns das Vorwrtsschreiten in einer Grafik vorstellen, wo bei wir bei f(6) anfangen und den Pfeilen folgen. Fibonacci folge java calculator. Die Regel dabei ist, folge den Pfeilen wenn mglich nach unten und erst wenn kein Pfeil mehr nach unten zeigt, nehme man die Alternative. Dabei beachte man, dass einem Pfeil nur einmal gefolgt wird. Der erste Teil der Aufruffolge ist also: fib(5) -> fib(4) -> fib(3) -> fib(2), liefert Wert 1. Zurck zu fib(3) weiter auszuwerten fib(3) -> fib(1), liefert 1, zurck an fib(3), fib(3) gibt an fib(4) den Wert 2. Nun kann fib(4) weitermachen, denn es braucht noch fib(2), die 1 zurckliefert. Nun kann fib(4) den Wert 3 an fib(5) liefern, fib(5) bentigt aber noch fib(3) usw. Deutlich wird: Es entsteht ein komplexe Aufruffolge der Methode und es wird die Methode recht hufig mit den gleichen Parametern aufgerufen, was die Effizienz des Algorithmus schwer beeintrchtigt.