Fibonacci-Zahlen in Java-Sprache

Fibonacci Zahlen In Java Sprache



Die Fibonacci-Zahlen sind eine bestimmte Folge von positiven (ganzzahligen) ganzen Zahlen, beginnend bei null bis positiv unendlich. Die aktuelle Fibonacci-Zahl erhält man durch Addition der beiden unmittelbar vorhergehenden Fibonacci-Zahlen. Die beiden unmittelbar vorhergehenden Fibonacci-Zahlen sind nicht irgendwelche Zahlen.

Tatsächlich sind die ersten beiden Fibonacci-Zahlen vordefiniert. Die erste Fibonacci-Zahl ist 0 und die zweite Fibonacci-Zahl ist 1. Mit nullbasierter Indizierung und der Annahme, dass sich Fibonacci-Zahlen in einem Array befinden, dann:

am Index 0 , die Fibonacci-Zahl ist 0 , ( vordefiniert ) ;

am Index 1 , die Fibonacci-Zahl ist 1 , ( vordefiniert ) ;

am Index zwei , die Fibonacci-Zahl ist 1 = 1 + 0 , ( per Definition ) ;

am Index 3 , die Fibonacci-Zahl ist zwei = 1 + 1 , ( per Definition ) ;

am Index 4 , die Fibonacci-Zahl ist 3 = zwei + 1 , ( per Definition ) ;

am Index 5 , die Fibonacci-Zahl ist 5 = 3 + zwei , ( per Definition ) ;

am Index 6 , die Fibonacci-Zahl ist 8 = 5 + 3 , ( per Definition ) ;

am Index 7 , die Fibonacci-Zahl ist 13 = 8 + 5 , ( per Definition ) ;

am Index 8 , die Fibonacci-Zahl ist einundzwanzig = 13 + 8 , ( per Definition ) ;

am Index 9 , die Fibonacci-Zahl ist 3. 4 = einundzwanzig + 13 , ( per Definition ) ;

usw.







Bei der Programmierung wird die Variable n und nicht i für die nullbasierten Indizes für diese Fibonacci-Zahlen verwendet. Und damit lauten die ersten zwölf Fibonacci-Zahlen:



0 1 1 zwei 3 5 8 13 einundzwanzig 3. 4 55 89
0 1 zwei 3 4 5 6 7 8 9 10 elf

Die zweite Zeile in der Tabelle gibt die nullbasierten Indizes an, von denen jeder die Variable n in der Programmierung haben würde. Die erste Reihe gibt die entsprechenden Fibonacci-Zahlen an. Fibonacci-Zahlen sind also nicht irgendwelche Zahlen. Die Kerndefinition beginnt mit 0 für die erste Fibonacci-Zahl und 1 für die zweite Fibonacci-Zahl. Der Rest der Nummern wird von dort produziert.



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





Dieser Artikel erklärt diese beiden Möglichkeiten, Fibonacci-Zahlen in Java zu erzeugen.

Formel für eine Fibonacci-Zahl

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

wo f n ist die Fibonacci-Zahl beim nullbasierten n th Index. So ist die Fibonacci-Zahl definiert.



Produzieren von Fibonacci-Zahlen in O(n)-Zeit

Wenn Fibonacci-Zahlen in O(3)-mal erzeugt werden sollen, würden die Zahlen 0, 1, 1 erzeugt werden; das sind die ersten drei Fibonacci-Zahlen. Das letzte nullbasierte n th Index ist hier 2. Wenn Fibonacci-Zahlen in O(7)-mal erzeugt werden sollen, würden die Zahlen 0, 1, 1, 2, 3, 5, 8 erzeugt; das sind die ersten sieben Fibonacci-Zahlen. Das letzte nullbasierte n th Index ist hier 6. Wenn Fibonacci-Zahlen in O(n)-mal erzeugt werden sollen, würden die Zahlen 0, 1, 1, 2, 3, 5, 8 – – - erzeugt; das sind die ersten n Fibonacci-Zahlen. Das letzte nullbasierte n th Index ist hier n-1.

Die Java-Methode in einer Klasse zum Erzeugen der ersten n Fibonacci-Zahlen lautet:

Klasse Fibonacci {
Leere fibonacci ( int [ ] P ) {
int n = P. Länge ;
wenn ( n > 0 )
P [ 0 ] = 0 ;
wenn ( n > 1 )
P [ 1 ] = 1 ;
zum ( int ich = zwei ; ich < n ; ich ++ ) { //n=0 und n=2 wurden berücksichtigt
int aktuelleNr = P [ ich - 1 ] + P [ ich - zwei ] ;
P [ ich ] = aktuelleNr ;
}
}
}

Die Klasse Fibonacci ist privat. Das fibonacci() Die Methode nimmt das Array P und gibt void zurück. Das Verfahren beginnt mit der Bestimmung der Länge des Arrays. Diese Länge von n ist die Anzahl der erforderlichen Fibonacci-Zahlen. Die erste und zweite Fibonacci-Zahl werden explizit bestimmt und an die erste und zweite Position im Array gesetzt.

Die restlichen Fibonacci-Zahlen ab der dritten (Index, n = 2) werden in einer for-Schleife ermittelt und an ihren Positionen im Array abgelegt. Die Funktion muss also void zurückgeben. Die Hauptanweisung in der for-Schleife addiert die beiden vorherigen Zahlen.

Der Übersichtlichkeit halber wurde anstelle von n die Indexvariable i verwendet.

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

Öffentlichkeit Klasse Hauptsächlich {
Öffentlichkeit statisch Leere hauptsächlich ( Schnur Argumente [ ] ) {
int m = 12 ;
int [ ] Arr = Neu int [ m ] ;
Fibonacci-Obj = Neu Fibonacci ( ) ;
obj. fibonacci ( Arr ) ;
zum ( int ich = 0 ; ich < m ; ich ++ )
System . aus . drucken ( Arr [ ich ] + ' ' ) ;
System . aus . println ( ) ;
}
}

Nachdem die Zahlen durch die Methode fibonacci() erzeugt wurden, liest die Java-Hauptmethode sie aus.

Produzieren einer Fibonacci-Zahl in konstanter Zeit

Es gibt eine mathematische Formel, die verwendet werden kann, um eine Fibonacci-Zahl zu erzeugen, wenn der entsprechende nullbasierte Index n gegeben ist. Die Formel lautet:

wobei n der nullbasierte Index und Fib n ist die entsprechende Fibonacci-Zahl. Beachten Sie, dass auf der rechten Seite der Gleichung nicht die Quadratwurzel von 5 mit n potenziert wird; es ist der Ausdruck in Klammern, der mit n potenziert wird. Es gibt zwei solcher Ausdrücke.

Wenn n 0 ist, Fib n wäre 0. Wenn n 1 ist, Fib n wäre 1. Wenn n 2 ist, Fib n wäre 1. Wenn n 3 ist, Fib n wäre 2. Wenn n 4 ist, Fib n wäre 3 – und so weiter. Der Leser kann diese Formel mathematisch überprüfen, indem er verschiedene Werte für n einsetzt und auswertet.

Bei der Codierung würde diese Formel nur eine Fibonacci-Zahl für n ergeben. Wenn mehr als eine Fibonacci-Zahl benötigt wird, muss der Code für die Formel einmal für jeden der verschiedenen entsprechenden Indizes aufgerufen werden.

In Java ist die Methode, um nur eine Fibonacci-Zahl zu erzeugen, wie folgt:

importieren java.lang.* ;

Klasse Flunkerei {
doppelt fibNr ( int n ) {
doppelt FibN = ( Mathematik . pow ( ( 1 + Mathematik . quadrat ( 5 ) ) / zwei , n ) Mathematik . pow ( ( 1 - Mathematik . quadrat ( 5 ) ) / zwei , n ) ) / Mathematik . quadrat ( 5 ) ;
Rückkehr FibN ;
}
}

Das Paket java.lang.* musste zu Beginn des Programms importiert werden. Das liegt daran, dass das Paket über die Math-Klasse verfügt, die über die Methoden Potenz (pow) und Quadratwurzel (sqrt) verfügt. Die benutzerdefinierte Java-Methode hier implementiert die mathematische Formel direkt.

Die Zeitkomplexität für diese Funktion ist O(1), konstante Zahl einer Hauptoperation. Eine geeignete Java-Hauptklasse mit Java-Hauptmethode für die obige Methode ist:

Öffentlichkeit Klasse Hauptsächlich {
Öffentlichkeit statisch Leere hauptsächlich ( Schnur Argumente [ ] ) {
int N = elf ;
Fib-Obj = Neu Flunkerei ( ) ;
doppelt Rechts = obj. fibNr ( N ) ;
System . aus . println ( Rechts ) ;
}
}

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

89.00000000000003

Die unnötigen Dezimalstellen können entfernt werden, aber das ist eine Diskussion für ein anderes Mal.

Fazit

Fibonacci-Zahlen sind eine bestimmte Folge ganzer Zahlen. Um die aktuelle Nummer zu erhalten, addieren Sie die unmittelbar vorhergehenden zwei entsprechenden Nummern. Die ersten beiden Fibonacci-Zahlen, 0 gefolgt von 1, sind für die gesamte Sequenz vordeklariert. Der Rest der Fibonacci-Zahlen wird von dort erzeugt.

Um Fibonacci-Zahlen von Index 2 zu dem zu erzeugen, der Index n-1 entspricht, verwenden Sie eine for-Schleife mit der Hauptanweisung:

int aktuelleNr = P [ ich - 1 ] + P [ ich - zwei ] ;

wobei currNo die aktuelle Fibonacci-Zahl und P das Array zum Speichern der n Zahlen ist.

Um nur eine Fibonacci-Zahl aus einem beliebigen nullbasierten Index n zu erzeugen, verwenden Sie die mathematische Formel: