Introducere în funcția recursivă în C

Procesul de repetare a elementelor într-un mod similar cum a fost înainte este cunoscut ca recurs. Se spune că o funcție este recursivă dacă se numește în sine. Recursiunea este susținută de limbajul de programare C. Mai jos sunt două condiții critice pentru implementarea recurentei în C:

  • O condiție de ieșire: Această condiție ajută funcția să identifice când trebuie să ieși din funcție. În cazul în care nu specificăm condiția de ieșire, atunci codul va intra într-o buclă infinită.
  • Schimbarea contorului: Schimbarea contorului în fiecare apel la acea funcție.

În acest fel, putem implementa o funcție recursivă în limbajul de programare C. Aceste funcții sunt utile pentru rezolvarea problemelor matematice de bani care necesită un proces similar pentru a fi apelat de mai multe ori. Exemple de astfel de probleme sunt calcularea factorial a unui număr de generații de serii Fibonacci.

Sintaxă:

int fun(a1)
(
If(base_condition) return val;
fun(a2);
)

Cum funcționează funcția recursivă în C?

Funcțiile recursive sunt modalitatea de implementare a ecuației în limbajul de programare C. O funcție recursivă este apelată cu un argument transmis în ea spunând n, memoria din stivă este alocată atât variabilelor locale, cât și funcțiilor. Toate operațiunile prezente în funcție sunt efectuate folosind acea memorie. Starea de ieșire este verificată dacă îndeplinește. Când compilatorul detectează un apel către o altă funcție, alocă imediat o nouă memorie în partea de sus a stivei, unde se creează o copie diferită a acelorași variabile locale și funcția. Introduceți același proces continuă.

Când starea de bază se întoarce, valoarea particulară a trecut funcției de apelare. Memoria alocată acelei funcții se șterge. în mod similar, noua valoare este calculată în funcția de apelare și IT revine la funcția super apelantă. Astfel, apelurile recursive sunt făcute pentru ca funcția de ștergere ajunge la prima funcție, iar întreaga memorie de stivă se șterge, iar ieșirea este returnată. Condiția de bază sau condiția de ieșire nu sunt specificate în funcție, apoi apelurile recursive la funcție pot duce la o buclă infinită.

Exemplu de funcție recursivă

Acum vom vedea exemplele Funcției Recursive din C

Cod:

#include
int fun(int n)
(
if(n==1) return 1 ; //exit or base condition which gives an idea when to exit this loop.
return n*fun(n-1); //function is called with n-1 as it's argument .
//The value returned is multiplied with the argument passed in calling function.
)
int main()(
int test=4;
int result =0;
result =fun(test);
printf("%d", result);//prints the output result.
)

ieşire:

Explicarea codului de mai sus

Exemplul de mai sus este acela de a găsi factorialul unui număr. Când funcția principală numește fun (4), atunci mai întâi este bifată starea de ieșire (4 == 1), apoi se apelează 4 * fun (3). Din nou starea de bază (3 == 1) este verificată. În mod similar, se va întoarce 3 * fun (2) este apelat și aceasta continuă până la 2 * fun (1) se numește și unde îndeplinește condiția de bază și returnează 1 apoi funcția de apelare returnează 2 * 1 apoi, 3 * 2 * 1 iar de la primul apel se returnează 4 * 3 * 2 * 1. Astfel, rezultați stocarea funcțiilor principale 24 și imprimarea acestora la ieșire.

Alocarea de memorie a funcției recursive

Fiecare apel către o funcție în limbajul c are ca rezultat alocarea memoriei în partea de sus a unei stive. Când o funcție recursivă este numită memorie i se alocă în partea de sus a memoriei care a fost alocată funcției de apelare cu toate diferitele copii ale variabilelor locale sunt create pentru fiecare apel la funcție.
La ce condiție de bază este atinsă, memoria alocată funcției este distrusă și indicatorul revine la funcția de apelare? acest proces se repetă apoi la prima funcție de apelare și în sfârșit, memoria stivă devine goală.

În exemplul dat mai sus pentru a calcula factorialul unui număr de mai jos este scenariul pentru alocarea memoriei.

Pasul 1

Pasul 2

Pasul 3

Pasul - 4

Pasul - 5

Pasul - 6

Pasul - 7

Pasul - 8

Pasul - 9

Tipuri de recurs

Există două tipuri de recursiune în programarea C care sunt date mai jos:

1. Recursiunea la coadă și nerefuzată

Tipul de recurs mai sus menționat este explicat mai jos:

  • Recursiunea cozii

Este un tip de recurs recursiv recursiv recurs în funcția care este ultima acțiune care a fost făcută în definirea funcției. Mijloace de apel recursiv are loc după ce orice altceva logica din funcție este implementată.

Utilizarea unei recursuri de coadă în programul nostru în hansie performanța programului și, de asemenea, reduce utilizarea memoriei de astfel de funcții. Acest lucru se întâmplă deoarece deoarece o altă logică a funcției a fost implementată memoriei alocate funcției de apelare poate fi scoasă din stivă și reutilizată.

Cod:

int fun1(n)(
printf(“the result is “);
return fun1(n-1);
)
void main()
(
fun1(4);
)

  • Recursiune fără coadă

Acest tip de colaj recursiv recursiv realizat la mijlocul definiției funcției. Recursul pantalonilor pentru bărbați este finalizat, iar valorile returnate funcției de apelare, mai sunt pași de efectuat, astfel încât memoria nu poate fi ștersă.

Cod:

int fun1(n)(
printf(“the result is “);
return n* fun1(n-1);
)
void main()(
fun1(4);
)

2. Recursiune directă și indirectă

Tipul de recurs mai sus menționat este explicat mai jos:

  • Recursiune indirectă

Se spune că recursiunea indirectă are loc atunci când se numește o anumită funcție în mod recursiv, mediu al unei alte funcții.

Cod:

int fun1()(
fun2();
)
int fun2()(
fun1(); // calling the procedure recursively using another function.
)
void main()(
fun1();
)

  • Recursiune directă

Se spune că recursiunea directă are loc atunci când apelul recursiv la funcție se face în propria definiție. '

Cod:

int fun1()(
fun1();
)
void main()(
fun1();
)

Concluzie

Se poate concluziona cu ușurință că funcțiile recursive sunt cel mai importante pentru rezolvarea problemelor matematice care necesită o metodă similară, pentru a fi implementată în mod repetat, o metodă similară până la îndeplinirea unei condiții de ieșire. Multe probleme, cum ar fi turnurile Hanoiului, traversări de copaci, care calculează profunzimea graficelor.

Este important să menționăm o condiție de bază pentru funcția recursivă. Cerințele de memorie și timp sunt mai mari pentru programul recursiv, comparativ cu cele iterative, deci trebuie utilizate cu atenție.

Articole recomandate

Acesta este un ghid pentru un exemplu de funcție recurentă în C. Aici vom discuta despre lucrări, tipuri, alocarea memoriei și exemple de funcție recursivă în C. Puteți, de asemenea, să consultați articolele următoare pentru a afla mai multe-

  1. Arătări în programarea C
  2. Palindrom în programul C
  3. Modele în programarea C
  4. C vs C ++
  5. Palindrom în JavaScript
  6. Ghid pentru seria Fibonacci În JavaScript