Fibonacci Reihe berechnen
Berechnet die Fibonacci-Reihe bis zu einer gewünschten Anzahl von Gliedern und gibt sie als Liste aus.
Die Fibonacci-Reihe ist eine der bekanntesten Zahlenfolgen der Mathematik: Jedes Glied ist die Summe seiner beiden Vorgänger — 1, 1, 2, 3, 5, 8, 13, 21 und so weiter. Benannt ist sie nach Leonardo Fibonacci, der sie 1202 anhand einer Aufgabe über die Vermehrung von Kaninchen beschrieb. Dieses Script von unserem User „Zettelkasten" berechnet euch die Reihe bis zu einer gewünschten Anzahl von Gliedern.
Gebt einfach ein, wie viele Glieder berechnet werden sollen — vorbelegt sind 10 —, und klickt auf „Berechnen". Die Reihe erscheint dann als kommagetrennte Liste darunter.
Die Folge taucht erstaunlich oft in der Natur auf, etwa bei der Anordnung von Sonnenblumenkernen oder den Spiralen von Tannenzapfen. Außerdem nähert sich das Verhältnis zweier aufeinanderfolgender Fibonacci-Zahlen mit wachsender Reihe immer mehr dem Goldenen Schnitt (rund 1,618) an.
Ein weiteres Fibonacci-Javascript in unserem Archiv stellt die Ergebnisse etwas anders dar.
Ab etwa dem 79. Glied überschreiten die Werte den Bereich, in dem JavaScript exakt rechnet — die Zahlen werden dann gerundet.
So funktioniert das Script
Das Script hat vier Schritte: die gewünschte Anzahl einlesen, die Eingabe prüfen, in einer Schleife die Reihe aufbauen und das Ergebnis ausgeben. Das Original von 2010 fragte die Anzahl per prompt()-Dialog ab und schrieb die Zahlen mit document.write() direkt in die Seite — die modernisierte Fassung nutzt ein Eingabefeld und eine Ergebnisfläche, rechnet aber mit exakt derselben Logik.
let zahl1 = 0;
let zahl2 = 1;
const reihe = [];
Für die Fibonacci-Reihe braucht man sich immer nur die beiden letzten Glieder zu merken — genau das tun zahl1 und zahl2. Mit den Startwerten 0 und 1 ergibt die erste Summe eine 1, der Anfang der Reihe. Das Array reihe sammelt unterwegs alle berechneten Glieder ein.
for (let nr = 1; nr <= eingabe; nr++) {
const ergebnis = zahl1 + zahl2;
reihe.push(ergebnis);
zahl1 = zahl2;
zahl2 = ergebnis;
}
Das Herzstück: In jedem Durchlauf entsteht das nächste Glied als Summe der beiden Vorgänger und wandert per push in die Liste. Danach rücken die Merkvariablen eine Position weiter — der bisherige zweite Wert wird zum ersten, die neue Summe zum zweiten. Kleine Eigenheit, die schon das Original hatte: Weil mit 0 und 1 gestartet und erst ab der ersten Summe ausgegeben wird, erscheint die 1 nur einmal — die Ausgabe beginnt mit 1, 2, 3, 5 statt mit dem klassischen 1, 1, 2, 3, 5.
if (isNaN(eingabe) || eingabe < 1) { … }
if (eingabe > 1000) { … }
Vor dem Rechnen wird die Eingabe geprüft: parseInt hat den Feldinhalt in eine ganze Zahl verwandelt, isNaN („is Not a Number") erkennt ungültige Eingaben. Die Obergrenze von 1000 ist neu und schützt den Browser vor absurd großen Schleifen — inhaltlich verliert ihr nichts, denn ab etwa dem 79. Glied übersteigen die Werte ohnehin die größte Ganzzahl, mit der JavaScript exakt rechnen kann (Number.MAX_SAFE_INTEGER, rund 9 Billiarden), und werden nur noch gerundet dargestellt.
ausgabe.textContent = reihe.join(", ");
join(", ") verbindet alle gesammelten Glieder zu einem einzigen Text mit Komma und Leerzeichen dazwischen, und textContent setzt ihn in die Ergebnisfläche. Verbunden wird die Funktion ganz am Ende per addEventListener("click", …) mit dem Knopf — das Script steht deshalb unter dem Formular, damit Feld und Knopf beim Ausführen schon existieren.
Zum Anpassen: Über die Startwerte von zahl1 und zahl2 lassen sich verwandte Folgen erzeugen — mit 2 und 1 erhaltet ihr etwa die Lucas-Folge. Auch das Trennzeichen der Ausgabe ändert ihr mit einem Handgriff im join(", ").
Script für die eigene Homepage
Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.
Mehr aus der Kategorie Mathematik
-
5 Zahlen
-
Altersberechnungen
-
Anzahl der Stellen von Potenzen kalkulieren
-
Barrel in Liter
-
Beliebige Wurzel ziehen
-
Binomialverteilung
-
Collatz Problem
-
Denk Dir eine Zahl
-
Dezimalbruch
-
Dezimalzahl in Binärzahl umwandeln
-
Die Kamelhändler
-
Downloadzeit-Rechner
-
Drehender Kreis 1
-
Drehender Kreis 2
-
Drehender Kreis 3
-
Dreiecksrechner
-
Dreisatz
-
Dreisatz antiproportional
-
Einfacher Euro-Rechner
-
Fakultät berechnen
-
Fakultätsrechner
-
Fibonacci-Zahlen
-
Flächenberechnung / Dreieck
-
Flächenberechnung / Kreis
-
Flächenberechnung / Parallelogramm
-
Flächenberechnung / Rechteck
-
Flächenberechnung / Trapez
-
Gedanken lesen
-
Geschwindigkeitsmesser