Fibonacci -Zahlen in der Python -Sprache

Fibonacci -Zahlen in der Python -Sprache
„Wenn 0 zu 1 hinzugefügt wird, wäre die Antwort 1. Wenn die Antwort 1 und die Addend (nicht der Augend) zusammengefügt werden, wäre die neue Antwort 2. Wenn diese neue Antwort und ihre Addend zusammengefügt werden, wäre die Antwort 3. Wenn diese neue Antwort und ihre Addend zusammengefügt werden, wäre die Antwort 5.”

Fibonacci-Zahlen sind eine bestimmte Sequenz, in der der erste Wert als 0 vorgezogen wird und der zweite Wert als 1 vorgezeichnet ist. Der Rest der Zahlen wird aus diesen beiden erzeugt, indem die beiden vorherigen Zahlen hinzugefügt werden. Alle Fibonacci -Zahlen sind positive Ganzzahlen, beginnend von 0. Die ersten zwölf Fibonacci -Zahlen und wie sie erhalten werden, sind wie folgt:

0
1
1 + 0 = 1
1 + 1 = 2
2 + 1 = 3
3 + 2 = 5
5 + 3 = 8
8 + 5 = 13
13 + 8 = 21
21 + 13 = 34
34 + 21 = 55
55 + 34 = 89

Ohne die Summenausdrücke können diese Fibonacci -Zahlen wie folgt in eine Tabelle gestellt werden:

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 erste Reihe hat die Fibonacci -Zahlen. Die zweite Zeile verfügt.

Fibonacci -Zahlen können in O (n) Zeit und in o (1) Zeit erzeugt werden. In diesen zeitlichen Komplexitätsausdrücken bedeutet N n Hauptvorgänge und 1 Hauptbetrieb 1 Hauptbetrieb. Mit O (n) werden N -Fibonacci -Zahlen erzeugt, ab 0 ab 0. Mit O (1) wird eine Fibonacci -Zahl aus einem entsprechenden Index hergestellt. Deshalb dauert es nur einen Hauptvorgang anstelle von N -Hauptoperationen.

Ziel dieses Artikels ist es zu erklären.

Formel für eine Fibonacci -Nummer

Die formale Definition einer Fibonacci -Nummer lautet:

wo fN ist die Fibonacci-Nummer am null basierten n

Erzeugung von Fibonacci -Zahlen in o (n) Zeit

Wenn n 1 ist, wird nur 0 als Fibonacci -Nummer gedruckt. Wenn n 2 ist, werden 0 und 1 in dieser Reihenfolge als Fibonacci -Nummern gedruckt. Wenn N 3 ist, dann werden 0, 1 und 1 in dieser Reihenfolge als Fibonacci -Zahlen gedruckt. Wenn n 4 ist, dann würden 0, 1, 1 und 2 in dieser Reihenfolge als Fibonacci -Zahlen gedruckt. Wenn n 5, dann 0, 1, 1, 2 und 3 ist, werden in dieser Reihenfolge als Fibonacci -Zahlen gedruckt. Wenn n 6, dann 0, 1, 1, 2, 3 und 5 ist.

Die Python -Funktion zur Erzeugung der ersten N -Fibonacci -Zahlen lautet:

Def Fibonacci (n):
arr = [0] * (n)
arr [1] = 1
für i in Reichweite (2, n):
arr [i] = arr [i - 1] + arr [i - 2]
return arr

Es beginnt mit der Schaffung einer Reihe von N -Elementen, die alle zu Nullen initialisiert wurden. Dieses Array hält die Fibonacci -Nummern. Die erste Fibonacci -Nummer, 0, ist bereits da. Die zweite Fibonacci -Nummer 1 wird durch die nächste Anweisung zugewiesen (in der Funktion). Dann gibt. Es hat die Aussage:

arr [i] = arr [i - 1] + arr [i - 2]

Dies fügt die unmittelbaren vorherigen zwei Zahlen hinzu.

Code zum Aufrufen der Funktion und drucken die ersten zwölf Fibonacci -Nummern können sein:

N = 12
A = fibonacci (n)
für i in Reichweite (n):
drucken (a [i], end = ")
drucken()

Die Ausgabe ist:

0 1 1 2 3 5 8 13 21 34 55 89

Erstellen einer Fibonacci -Zahl in konstanter Zeit

Es gibt eine mathematische Formel, die einen Null-basierten Index mit der entsprechenden Fibonacci-Nummer bezieht. Die Formel lautet:

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 solche Ausdrücke.

Wenn N 0 ist, wäre Fibn 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 unterschiedliche Werte für n ersetzen und bewerten. n ist ein auf Null basierender Index in dieser Formel.

Der Python -Code für diese Formel lautet:

Mathematik importieren

def fibno (n):
Fibn = (((1+math).SQRT (5))/2) ** n - ((1 -Math).SQRT (5)) / 2) ** n) / Mathematik.SQRT (5)
Fibn zurückgeben

Das Mathematikmodul wurde importiert. Es hat die Quadratwurzelfunktion. Der Bediener ** wird für die Stromversorgung verwendet. Die Funktion fibno () implementiert die Formel direkt. Ein geeigneter Anruf und Druck für die Funktion fibno () lautet:

N = 11
ret = fibno (n)
drucken (ret)

Die Ausgabe ist:

89.000000000003

Es ist möglich, die unnötigen Dezimalstellen aus der Antwort zu entfernen. Dies ist jedoch eine Diskussion für einige andere Zeit.

Wenn für verschiedene N -Indizes verschiedene Fibonacci -Zahlen erforderlich sind, muss die Funktion fibno () für jeden der N -Index einmal aufgerufen werden, um die verschiedenen entsprechenden Fibonacci -Zahlen zurückzugeben. Das folgende Programm erledigt dies für die Null-basierten Indizes 7 bis 9 (inklusive):

Mathematik importieren

def fibno (n):
Fibn = (((1+math).SQRT (5))/2) ** n - ((1 -Math).SQRT (5)) / 2) ** n) / Mathematik.SQRT (5)
Fibn zurückgeben
für i in Reichweite (7, 10):
print (fibno (i), end = ")
drucken()

Die Ausgabe ist:

13.0000000000002 21.0000000000004 34.00000000000001

Beachten Sie die Art und Weise, wie die For-Schleife in Python codiert wurde. Der erste Index ist 7. Der nächste Index ist 8 und der letzte Index ist 9. 10 im Bereich der Entfernung ist 9 + 1. Der Wert in der Position von 10 muss der letzte Null-basierte Index plus 1 sein. Das erste Argument, 7, ist der Start-Zero-basierte Index.

Abschluss

Fibonacci -Zahlen sind eine bestimmte Abfolge von ganzen Zahlen (positive Ganzzahlen). Es beginnt mit 0, gefolgt von 1 bedingungslos. Der Rest der Zahlen wird von dort aus entwickelt, indem die unmittelbaren vorherigen beiden Zahlen hinzugefügt werden.

Um die ersten N-Fibonacci-Nummern zu erhalten, akzeptieren Sie 0 und 1 als die ersten beiden und verwenden Sie dann für den Rest eine For-Schleife mit einer Aussage wie:

arr [i] = arr [i - 1] + arr [i - 2]

Das fügt die unmittelbaren vorherigen zwei Zahlen hinzu.

Verwenden Sie die Formel, um nur eine Fibonacci-Nummer aus einem Null-basierten Index N zu erhalten: