Fibonacci -Zahlen in der Java -Sprache

Fibonacci -Zahlen in der Java -Sprache
Die Fibonacci -Zahlen sind eine bestimmte Sequenz positiver (ganzer) Ganzzahlen, die von Null bis zu positiver Unendlichkeit beginnt. Die aktuelle Fibonacci -Nummer wird durch Hinzufügen der unmittelbaren vorherigen zwei Fibonacci -Zahlen erhalten. Die unmittelbaren vorherigen zwei Fibonacci -Zahlen sind keine Zahlen.

Tatsächlich sind die ersten beiden Fibonacci -Zahlen vordefiniert. Die erste Fibonacci -Nummer ist 0 und die zweite Fibonacci -Nummer 1 ist 1. Mit der Null-basierten Indexierung und der Annahme von Fibonacci-Zahlen befinden sich in einem Array: dann:

Bei Index 0 beträgt die Fibonacci -Nummer 0 (vordefiniert);
Bei Index 1 beträgt die Fibonacci -Nummer 1 (vordefiniert);
Bei Index 2 beträgt die Fibonacci -Nummer 1 = 1 + 0 (per Definition);
Bei Index 3 beträgt die Fibonacci -Zahl 2 = 1 + 1 (per Definition);
Bei Index 4 beträgt die Fibonacci -Zahl 3 = 2 + 1 (per Definition);
Bei Index 5 beträgt die Fibonacci -Zahl 5 = 3 + 2 (per Definition);
Bei Index 6 beträgt die Fibonacci -Zahl 8 = 5 + 3 (per Definition);
Bei Index 7 beträgt die Fibonacci -Zahl 13 = 8 + 5 (per Definition);
Bei Index 8 beträgt die Fibonacci -Zahl 21 = 13 + 8 (per Definition);
Bei Index 9 beträgt die Fibonacci -Zahl 34 = 21 + 13 (per Definition);

usw.

In der Programmierung wird die Variable n und nicht I für die Null-basierten Indizes für diese Fibonacci-Zahlen verwendet. Und damit sind die ersten zwölf Fibonacci -Zahlen:

0 1 1 2 3 5 8 13 21 34 55 89
0 1 2 3 4 5 6 7 8 9 10 11

Die zweite Zeile in der Tabelle gibt die null basierten Indizes an. Die erste Zeile gibt die entsprechenden Fibonacci -Zahlen an. Fibonacci -Nummern sind also keine Zahlen. Die Kerndefinition beginnt mit 0 für die erste Fibonacci -Nummer und 1 für die zweite Fibonacci -Nummer. Der Rest der Zahlen wird von dort aus erzeugt.

Fibonacci -Zahlen können in O (n) Zeit und auch in o (1) Zeit erzeugt werden. Für O (n) Zeit, wenn n zum Beispiel 12 ist, würden die ersten zwölf Fibonacci -Zahlen erzeugt. Für die Zeit o (1) wird nur eine Fibonacci -Zahl erzeugt. Wenn N beispielsweise 6 ist, würde die Fibonacci -Nummer 8 erzeugt.

In diesem Artikel werden diese beiden Möglichkeiten erläutert, Fibonacci -Zahlen in Java zu produzieren.

Formel für eine Fibonacci -Nummer

Es gibt eine mathematische Formel für eine Fibonacci -Nummer. Diese Formel kann in drei Zeilen oder einer Zeile geschrieben werden. In drei Zeilen ist es geschrieben als:

wo fN ist die Fibonacci-Nummer am null basierten nth Index. So wird die Fibonacci -Nummer definiert.

Erzeugung von Fibonacci -Zahlen in o (n) Zeit

Wenn Fibonacci -Zahlen in o (3) -Fachen erzeugt werden sollen, würden die Zahlen 0, 1, 1 produziert; Das sind die ersten drei Fibonacci -Zahlen. Das letzte null basierte nth Index hier, ist 2. Wenn in O (7) Fibonacci -Zahlen in O (7) erzeugt werden sollen, würden die Zahlen 0, 1, 1, 2, 3, 5, 8 produziert; Das sind die ersten sieben Fibonacci -Zahlen. Das letzte null basierte nth Index hier, ist 6. Wenn Fibonacci -Zahlen in o (n) mal erzeugt werden sollen, würden die Zahlen 0, 1, 1, 2, 3, 5, 8 - - -, produziert; Das sind die ersten N -Fibonacci -Zahlen. Das letzte null basierte nth Index hier ist N-1.

Die Java -Methode in einer Klasse, um die ersten N -Fibonacci -Zahlen zu erstellen, lautet:

Klasse Fibonacci
void fibonacci (int [] p)
int n = p.Länge;
if (n> 0)
P [0] = 0;
if (n> 1)
P [1] = 1;
für (int i = 2; iint Currno = p [i - 1] + p [i - 2];
P [i] = currno;


Die Klasse Fibonacci ist privat. Der fibonacci () Die Methode nimmt das Array P und gibt Leere zurück. Die Methode beginnt mit der Bestimmung der Länge des Arrays. Diese Länge von N ist die Anzahl der erforderlichen Fibonacci -Zahlen. Die ersten und zweiten Fibonacci.

Der Rest der Fibonacci-Nummern ab dem dritten (Index, n = 2) wird in einem für die Schleife bestimmt und in ihre Positionen in das Array eingesetzt. Die Funktion muss also void zurückkehren. Die Hauptaussage in der For-Loop fügt die beiden vorherigen Zahlen hinzu.

Die Indexvariable I wurde anstelle von N zum Zweck der Klarheit verwendet.

Eine geeignete Java -Hauptklasse (mit der Java -Hauptmethode) lautet:

Hauptklasse Haupt
public static void main (String args [])
int m = 12;
int [] arr = new int [m];
Fibonacci obj = new fibonacci ();
obj.Fibonacci (arr);
für (int i = 0; iSystem.aus.print (arr [i] + "");
System.aus.println ();

Nachdem die Zahlen von der Fibonacci () -Methode erzeugt wurden, liest die Java -Hauptmethode sie aus.

Erstellen einer Fibonacci -Zahl in konstanter Zeit

Es gibt eine mathematische Formel, mit der eine Fibonacci-Nummer erzeugt werden kann, wenn der entsprechende nullbasierte Index n angegeben ist, n. Die Formel lautet:

wobei N der nullbasierte Index und der Fib istN ist die entsprechende Fibonacci -Nummer. Beachten Sie, dass auf der rechten Seite der Gleichung nicht die Quadratwurzel von 5 ist, die auf die Power N angehoben wird; Es ist der Ausdruck in Klammern, der an die Macht n angehoben wird. Es gibt zwei solcher Ausdrücke.

Wenn N 0 ist, fibN wäre 0. Wenn n 1 ist, fibN wäre 1. Wenn n 2 ist, fibN wäre 1. Wenn N 3 ist, fibN wäre 2. Wenn n 4 ist, fibN wäre 3 und so weiter. Der Leser kann diese Formel mathematisch überprüfen, indem sie verschiedene Werte für n ersetzen und bewerten.

Wenn diese Formel codiert wird, erzeugt diese Formel nur eine Fibonacci -Nummer für n. Wenn mehr als eine Fibonacci -Nummern erforderlich sind, muss der Code für die Formel für jeden der verschiedenen entsprechenden Indizes einmal aufgerufen werden.

In Java lautet die Methode zur Herstellung von nur eine Fibonacci -Nummer:

Java importieren.Lang.*;
Klassenfib
Doppelfibno (int n)
Doppelfibn = (Mathematik.pow ((1+mathematik.SQRT (5))/2, n) -math.pow ((1-math).SQRT (5)) / 2, n)) / Mathematik.SQRT (5);
Fibn zurückgeben;

Die Java.Lang.* Das Paket musste zu Beginn des Programms importiert werden. Dies liegt daran. Die benutzerdefinierte Java -Methode hier implementiert die mathematische Formel direkt.

Die zeitliche Komplexität für diese Funktion ist o (1), konstanter Zahm einer Hauptoperation. Eine geeignete Java -Hauptklasse mit Java -Hauptmethode für die obige Methode lautet:

Hauptklasse Haupt
public static void main (String args [])
int n = 11;
Fib obj = neuer fib ();
double ret = obj.Fibno (n);
System.aus.println (ret);

Der Index n = 11 wird gesendet und die Fibonacci -Nummer 89 wird zurückgegeben. Die Ausgabe ist:

89.000000000003

Die unnötigen Dezimalstellen können entfernt werden, aber das ist eine Diskussion für einige andere Zeit.

Abschluss

Fibonacci -Zahlen sind eine bestimmte Abfolge von ganzen Zahlen. Um die aktuelle Zahl zu erhalten, fügen Sie die unmittelbaren vorherigen beiden entsprechenden Zahlen hinzu. Die ersten beiden Fibonacci-Zahlen, 0, gefolgt von 1. Der Rest der Fibonacci -Zahlen wird von dort aus erstellt.

Verwenden Sie eine FOR-LOOP mit der Hauptaussage, um Fibonacci-Nummern von Index 2 bis zu dem zu produzieren, was dem Index N-1 entspricht:

int Currno = p [i - 1] + p [i - 2];

wobei Currno die aktuelle Fibonacci -Nummer ist und P das Array zum Speichern der N -Zahlen ist.

Verwenden Sie die mathematische Formel: