Fibonaccijev niz - objašnjen u Pythonu, JavaScript-u, C ++-u, Javi i Swiftu

Fibonaccijev niz je po definiciji cjelobrojni niz u kojem je svaki broj nakon prva dva zbroj dva prethodna broja. Da pojednostavimo:

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

Ima mnogo primjena u matematici, pa čak i u trgovanju (da, dobro ste pročitali: trgovanje), ali to nije poanta ovog članka. Moj današnji cilj je pokazati vam kako možete izračunati bilo koji pojam ove serije brojeva u pet različitih programskih jezika pomoću rekurzivnih funkcija.

Rekurzivne funkcije su one funkcije koje se, u osnovi, nazivaju same.

Želim napomenuti da ovo nije najbolja metoda za to - zapravo, moglo bi se smatrati najosnovnijom metodom u tu svrhu. To je zato što je računalna snaga potrebna za izračunavanje većih članaka serije ogromna. Broj poziva funkcije uzrokuje preljev stoga na većini jezika.

Svejedno, za potrebe ovog vodiča, krenimo.

Prije svega, razmislimo o tome kako će kod izgledati. Sadržavat će:

· Rekurzivna funkcija F (F za Fibonacci): za izračunavanje vrijednosti sljedećeg pojma.

· Ništa drugo: upozorio sam vas da je to sasvim osnovno.

Naša će funkcija uzeti n kao ulaz, koji će se odnositi na n- ti pojam niza koji želimo izračunati. Dakle, F (4) bi trebao vratiti četvrti član niza.

Idemo to planirati. Kôd bi trebao, bez obzira na jezik, izgledati otprilike ovako:

function F(n)  if n = 0

   return 0  if n = 1

   return 1  else

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

Napomena: pojam 0 niza smatrat će se 0, pa će prvi pojam biti 1; drugi, 1; treći, 2; i tako dalje. Razumiješ.

Analizirajmo na trenutak funkciju. Ako dobije 0 kao ulaz, vraća 0. Ako dobije 1, vraća 1. Ako dobije 2 ... Pa, u tom slučaju pada u naredbu else, koja će ponovno pozvati funkciju za izraze 2–1 ( 1) i 2–2 (0). To će vratiti 1 i 0, a dva rezultata će se dodati, vraćajući 1. Savršeno.

Sada možete vidjeti zašto su rekurzivne funkcije problem u nekim slučajevima. Zamislite da ste željeli 100. pojam niza. Funkcija bi se pozvala za 99. i 98., koji bi sami ponovno pozvali funkciju za 98. i 97., te 97. i 96. pojam ... i tako dalje. Bilo bi stvarno sporo.

Ali dobra vijest je da to zapravo djeluje!

Počnimo s različitim jezicima. Neću davati previše detalja (zapravo, nimalo detalja) kako bih vaše čitateljsko iskustvo poboljšalo. Ionako nema previše detalja.

Krenimo u to:

Piton

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

   return 0  if n == 1:

   return 1  else:

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

Brz

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);

 }}

I to je to. Odabrao sam ove jezike samo na temelju popularnosti - ili barem zato što je ovih 5 najčešćih koje koristim. Nisu u određenom redoslijedu. Mogli bi se klasificirati prema sintaksnoj poteškoći, po mom mišljenju, od Pythona (najlakšeg) do C ++ (najtežeg). Ali to ovisi o vašem osobnom mišljenju i vašem iskustvu sa svakim jezikom.

Nadam se da vam se svidio ovaj članak, a ako imate pitanja / preporuke ili samo želite pozdraviti, komentirajte u nastavku!