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);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 FibonacciDie 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 HauptNachdem 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.*;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 HauptDer Index n = 11 wird gesendet und die Fibonacci -Nummer 89 wird zurückgegeben. Die Ausgabe ist:
89.000000000003Die 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: