Introduksjon til rekursiv funksjon i C

Prosessen med å gjenta gjenstandene på en lignende måte som den var før, kalles rekursjon. En funksjon sies å være rekursiv hvis den kalles i seg selv. Rekursjon støttes av programmeringsspråket C. Nedenfor er to forhold som er kritiske for å implementere rekursjon i C:

  • En utgangsbetingelse: Denne tilstanden hjelper funksjonen til å identifisere når den skal avsluttes. I tilfelle vi ikke spesifiserer avkjørselstilstanden, vil koden gå inn i en uendelig sløyfe.
  • Endring av teller: Endring av teller i hver samtale til den funksjonen.

På denne måten kan vi implementere en rekursiv funksjon i programmeringsspråket C. Disse funksjonene er nyttige for å løse penger matematiske problemer som krever en lignende prosess å bli kalt flere ganger. Eksempler på slike problemer er beregning av fabrikken til en rekke generasjoner av Fibonacci-serier.

syntaks:

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

Hvordan rekursiv funksjon fungerer i C?

Rekursive funksjoner er måten å implementere ligningen på programmeringsspråk C. En rekursiv funksjon kalles med et argument sendt inn i det si n, hukommelse i bunken er tildelt de lokale variablene så vel som funksjonene. Alle operasjonene som er tilstede i funksjonen utføres ved hjelp av det minnet. Betingelsen for avkjørsel sjekkes om den oppfyller. Når kompilatoren oppdager et anrop til en annen funksjon, tildeler den umiddelbart nytt minne øverst i bunken der en annen kopi av de samme lokale variablene og funksjonen blir opprettet. Skriv inn den samme prosessen fortsetter.

Når grunnbetingelsen returnerer sann, overføres den spesielle verdien til samtalefunksjonen. Minnet som er tildelt den funksjonen blir tømt. på samme måte blir den nye verdien beregnet i samtalefunksjonen og IT går tilbake til superropfunksjonen. På denne måten blir rekursive anrop foretatt for sletting av funksjonen når den første funksjonen, og hele stackminnet blir slettet og output blir returnert. Incase-basistilstand eller exit-tilstand er ikke spesifisert i funksjonen, da rekursive samtaler til funksjonen kan føre til en uendelig sløyfe.

Eksempel på rekursiv funksjon

Nå skal vi se eksemplene på rekursiv funksjon i C

Kode:

#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.
)

Produksjon:

Forklaring av kode ovenfor

Det ovenfor gitte eksemplet er å finne faktabladet til et tall. Når hovedfunksjonen kaller moro (4), blir først avkjørselstilstanden (4 == 1) sjekket og deretter 4 * morsom (3). Igjen blir grunntilstand (3 == 1) sjekket. Tilsvarende vil det returnere 3 * moro (2) blir kalt, og dette fortsetter opptil 2 * moro (1) kalles, og hvor det oppfyller grunnbetingelsen og returnerer 1 så returnerer samtalefunksjonen 2 * 1 da, 3 * 2 * 1 og fra første samtale returneres 4 * 3 * 2 * 1. Dermed resultere i hovedfunksjon lagrer 24 og skriver ut som på output.

Minnetildeling av rekursiv funksjon

Hver samtale til en funksjon på c-språk resulterer i minnetildeling på toppen av en stabel. Når en rekursiv funksjon kalles, blir minnet tildelt den på toppen av minnet som er tilordnet samtalefunksjonen, og alle forskjellige kopier av lokale variabler opprettes for hvert anrop til funksjonen.
Hva er grunnbetingelsen er nådd, minnet som er tildelt til funksjonen blir ødelagt og pekeren går tilbake til samtalefunksjonen? denne prosessen gjentas deretter den første anropsfunksjonen, og til slutt blir stabelminnet tomt.

I det ovenfor gitte eksempelet for å beregne fakultetet til et tall nedenfor er scenariet for minnetildeling.

Trinn 1

Steg 2

Trinn - 3

Trinn - 4

Trinn - 5

Trinn - 6

Trinn - 7.

Trinn - 8

Trinn - 9.

Rekursjonstyper

Det er to typer rekursjon i C-programmering som er gitt nedenfor:

1. Rekursjon for hale og ikke-tailed

Ovennevnte type rekursjon blir forklart nedenfor:

  • Rekursjon for haler

Det er en type rekursiv funksjon rekursjonsanrop i funksjonen som er den siste handlingen som skal gjøres i definisjonen av funksjonen. Betyr rekursiv samtale oppstår etter at alt annet logikk i funksjonen er implementert.

Ved å bruke en hale rekursjon i vårt program i hansis ytelsen til programmet og reduserer også minnebruken av so funksjon. Det er slik at fordi annen logikk i funksjonen er implementert, kan minnet som er tilordnet til anropsfunksjonen fjernes fra bunken og gjenbrukes.

Kode:

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

  • Rekursjon uten tailed

Denne typen rekursive rekursive collage laget midt i funksjonsdefinisjonen. Rekursjon for herrebukser er fullført og verdiene som er returnert til den ringer funksjonen er det flere trinn som skal utføres, og dermed kan ikke minnet tømmes.

Kode:

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

2. Direkte og indirekte rekursjon

Ovennevnte type rekursjon blir forklart nedenfor:

  • Indirekte rekursjon

Indirekte rekursjon sies å skje når en bestemt funksjon kalles på rekursiv måte medium for en annen funksjon.

Kode:

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

  • Direkte rekursjon

Direkte rekursjon sies å skje når den rekursive oppfordringen til funksjonen blir gjort innenfor sin egen definisjon. '

Kode:

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

Konklusjon

Det kan lett konkluderes med at rekursive funksjoner er høyst viktige for å løse matematiske problemer som krever at en lignende metode all logikk blir implementert gjentatte ganger til en utgangsbetingelse er oppfylt. Mange problemer, for eksempel tårnene i Hanoi, treoverganger, beregning av gradedybde.

Det er viktig å nevne en grunnbetingelse for den rekursive funksjonen. Minne- og tidskrav er større for det rekursive programmet sammenlignet med de iterative, og må derfor brukes nøye.

Anbefalte artikler

Dette er en guide til eksempel på rekursiv funksjon i C. Her diskuterer vi arbeid, typer, minnetildeling og eksempler på rekursiv funksjon i C. Du kan også se på følgende artikler for å lære mer-

  1. Arrays in C-programmering
  2. Palindrome in C-programmet
  3. Mønstre i C-programmering
  4. C vs C ++
  5. Palindrome i JavaScript
  6. Guide til Fibonacci-serien i JavaScript