Die Fibonacci-Sequenz - Erklärt in Python, JavaScript, C ++, Java und Swift

Die Fibonacci-Folge ist per Definition die ganzzahlige Folge, in der jede Zahl nach den ersten beiden die Summe der beiden vorhergehenden Zahlen ist. Vereinfachen:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,…

Es hat viele Anwendungen in der Mathematik und sogar im Handel (ja, Sie haben das richtig gelesen: Handel), aber darum geht es in diesem Artikel nicht. Mein heutiges Ziel ist es, Ihnen zu zeigen, wie Sie mit rekursiven Funktionen einen beliebigen Term dieser Zahlenreihe in fünf verschiedenen Programmiersprachen berechnen können.

Rekursive Funktionen sind solche Funktionen, die sich grundsätzlich selbst nennen.

Ich möchte darauf hinweisen, dass dies nicht die beste Methode ist, um dies zu tun - tatsächlich könnte es als die grundlegendste Methode für diesen Zweck angesehen werden. Dies liegt daran, dass die Rechenleistung, die zur Berechnung größerer Terme der Serie erforderlich ist, immens ist. Die Häufigkeit, mit der die Funktion aufgerufen wird, führt in den meisten Sprachen zu einem Stapelüberlauf.

Beginnen wir für die Zwecke dieses Tutorials.

Lassen Sie uns zunächst darüber nachdenken, wie der Code aussehen wird. Es wird enthalten:

· Eine rekursive Funktion F (F für Fibonacci): um den Wert des nächsten Terms zu berechnen.

· Sonst nichts: Ich habe Sie gewarnt, dass es ziemlich einfach ist.

Unsere Funktion nimmt n als Eingabe, die sich auf den n- ten Term der Sequenz bezieht, die berechnet werden soll. Also sollte F (4) den vierten Term der Sequenz zurückgeben.

Lass es uns planen. Der Code sollte unabhängig von der Sprache ungefähr so ​​aussehen:

function F(n)  if n = 0

   return 0  if n = 1

   return 1  else

   return F(n-1) + F(n-2)

Hinweis: Der Term 0 der Sequenz wird als 0 betrachtet, sodass der erste Term 1 ist. der zweite, 1; der dritte, 2; und so weiter. Du verstehst es.

Lassen Sie uns die Funktion für einen Moment analysieren. Wenn es 0 als Eingabe erhält, gibt es 0 zurück. Wenn es 1 erhält, gibt es 1 zurück. Wenn es 2 erhält ... Nun, in diesem Fall fällt es in die else-Anweisung, die die Funktion für die Terme 2–1 erneut aufruft ( 1) und 2–2 (0). Das gibt 1 und 0 zurück und die beiden Ergebnisse werden addiert und geben 1 zurück. Perfekt.

Jetzt können Sie sehen, warum rekursive Funktionen in einigen Fällen ein Problem darstellen. Stellen Sie sich vor, Sie wollten den 100. Term der Sequenz. Die Funktion würde sich für den 99. und den 98. aufrufen, die selbst die Funktion für den 98. und 97. sowie den 97. und 96. Term erneut aufrufen würden ... und so weiter. Es wäre sehr langsam.

Aber die gute Nachricht ist, dass es tatsächlich funktioniert!

Beginnen wir also mit den verschiedenen Sprachen. Ich werde nicht zu viele Details angeben (eigentlich überhaupt keine Details), um Ihr Leseerlebnis zu verbessern. Es gibt sowieso nicht zu viele Details.

Lassen Sie uns hineinspringen:

Python

def F(n):  if n == 0:

   return 0  if n == 1:

   return 1  else:

   return F(n-1) + F(n-2)

Schnell

func F(_ n: Int) -> Int {  if n == 0 {    return 0

 }  if n == 1 {    return 1

 }  else {    return F(n-1) + F(n-2)

 }}

JavaScript

function F(n) {  if(n == 0) {    return 0;

 }  if(n == 1) {    return 1;

 }  else {    return F(n-1) + F(n-2);

 }}

Java

public static int F(int n) {  if(n == 0) {    return 0;

 }  if(n == 1) {    return 1;

 }  else {    return F(n-1) + F(n-2);

 }}

C ++

int F(int n) {  if(n == 0) {    return 0;

 }  if(n == 1) {    return 1;

 }  else {    return F(n-1) + F(n-2);

 }}

Und das ist es. Ich habe diese Sprachen nur aufgrund ihrer Beliebtheit ausgewählt - oder zumindest, weil diese 5 die am häufigsten verwendeten sind. Sie sind in keiner bestimmten Reihenfolge. Sie könnten meiner Meinung nach nach Syntaxschwierigkeiten von Python (am einfachsten) bis C ++ (am schwierigsten) klassifiziert werden. Das hängt aber von Ihrer persönlichen Meinung und Ihrer Erfahrung mit jeder Sprache ab.

Ich hoffe, Ihnen hat dieser Artikel gefallen und wenn Sie Fragen / Empfehlungen haben oder einfach nur Hallo sagen möchten, kommentieren Sie unten!