C Rekurzija (rekurzivna funkcija)

Sadržaj

U ovom uputstvu naučit ćete pisati rekurzivne funkcije u programiranju na C uz pomoć primjera.

Funkcija koja sebe naziva poznata je kao rekurzivna funkcija. A, ova je tehnika poznata kao rekurzija.

Kako rekurzija djeluje?

 void rekurse () (… rekurz ();…) int main () (… rekurz ();…)

Rekurzija se nastavlja sve dok se ne ispuni neki uvjet da se to spriječi.

Da bi se spriječila beskonačna rekurzija, može se koristiti izjava if … else (ili sličan pristup) tamo gdje jedna grana upućuje rekurzivni poziv, a druga ne.

Primjer: Zbroj prirodnih brojeva pomoću rekurzije

 #include int sum(int n); int main() ( int number, result; printf("Enter a positive integer: "); scanf("%d", &number); result = sum(number); printf("sum = %d", result); return 0; ) int sum(int n) ( if (n != 0) // sum() function calls itself return n + sum(n-1); else return n; ) 

Izlaz

 Unesite pozitivan cijeli broj: 3 zbroj = 6

U početku sum()se poziva iz main()funkcije s brojem koji se prosljeđuje kao argument.

Pretpostavimo da je vrijednost n unutra u sum()početku 3. Tijekom sljedećeg poziva funkcije, funkciji se prosljeđuje 2 sum(). Taj se postupak nastavlja sve dok n nije jednako 0.

Kada je n jednako 0, ifuvjet ne uspijeva i elsedio se izvršava vraćajući zbroj cijelih brojeva u konačnici main()funkciji.

Prednosti i nedostaci rekurzije

Rekurzija program čini elegantnim. Međutim, ako su performanse vitalne, umjesto toga koristite petlje jer je rekurzija obično puno sporija.

To je rečeno, rekurzija je važan pojam. Često se koristi u strukturi podataka i algoritmima. Na primjer, uobičajeno je koristiti rekurziju u problemima kao što je prelazak stabla.

Zanimljivi članci...