Treci la conținutul principal

Funcții recursive

Go acceptă funcții recursive. Pentru a fi recursivă, o funcție trebuie să se apeleze pe ea însăși și să ajungă în cele din urmă la o condiție de oprire.

Mai jos, testcount() se apelează pe ea însăși în mod repetat. Datele ei sunt variabila x, iar fiecare apel nou primește o valoare mai mare cu o unitate (x + 1). Odată ce x este egal cu 11 (x == 11), apelurile se opresc.

Exemplu

Prompt
Creează o funcție recursivă testcount care afișează numerele de la x până la 10, incrementând cu 1 la fiecare apel. Oprește-te când x este egal cu 11.
Ieșire: Program Go și ieșirea capturată

Exemplu cu factorial

Recursivitatea este o idee des întâlnită atât în matematică, cât și în programare. Avantajul ei este că poți prelucra datele pas cu pas până ajungi la un rezultat.

Totuși, ai grijă când scrii funcții recursive. Este ușor să ajungi la una care nu se termină niciodată sau la una care consumă prea multă memorie sau putere de procesare. Scrisă corect însă, o astfel de funcție poate fi atât foarte eficientă, cât și elegantă din punct de vedere matematic.

În acest exemplu, factorial_recursion() se apelează pe ea însăși, de fiecare dată cu x micșorat cu 1 (x-1). Apelurile se opresc când x nu mai este mai mare decât 0, ceea ce aici înseamnă că a ajuns la 0.

Exemplu

Prompt
Creează o funcție recursivă factorial_recursion care calculează factorialul unui număr float64. Apeleaz-o cu 4 și afișează rezultatul.
Ieșire: Program Go și ieșirea capturată