Introduksjon til rekursiv funksjon i C ++

For å starte med rekursiv funksjon i C ++, har vi allerede kjent den grunnleggende ideen bak C ++ -funksjoner som inkluderer funksjonsdefinisjon for å kalle andre funksjoner også. Og denne artikkelen dekker konseptet bak den rekursive definisjonen, et lekeverktøybegrep i matematikk og programmeringslogikk. Et kjent eksempel inkluderer faktorering av et tall, summen av 'n' naturlige tall, etc. En funksjon som kaller av seg selv er kjent som rekursiv funksjon. De er bare en funksjon som blir påberopt gjentatte ganger. Rekursjon har fått et problemløsningsverktøy, der det deler de større problemene inn i enkle oppgaver og jobber ut individuelt for å følge en individuell sekvens.

Datastrukturen konsepter som søk, sortering, gjennomgang av et tre, benytter seg av den rekursive funksjonen for sine løsninger. Denne programmeringsteknikken gjør koden enklere. Både iterasjon og rekursjon gjør den samme prosessen som en repetisjon av koden, men forskjellen i rekursjon er at de utfører en spesifikk del med selve grunnfunksjonen. I denne artikkelen vil vi diskutere rekursjonsbetydningen og arbeidsprosessen deres med et eksempel i detalj.

Syntaks for rekursiv funksjon i C ++

Den generelle syntaks for rekursiv funksjon i c ++ er gitt som:

return type function name((arguments))
(
Body of the statements;
function name ((actual arguments)) // recursive function
)

Hvordan rekursiv funksjon fungerer i C ++?

Rekursjon utfører repetisjon på funksjonskallene, og den stopper utførelsen når basissaken blir sann. En grunntilstand bør defineres i den rekursive funksjonen for å unngå feilmelding av stackoverløp. Hvis det ikke er definert noen grunnsak fører det til uendelig rekursjon. Når en funksjon kalles, skyver de dem inn i en stabel hver gang for å reservere ressursene for hver repetisjonssamtaler. Det gir det beste ved treovergang. Det er to forskjellige typer rekursjon: Direkte og indirekte rekursjon.

Direkte rekursiv: Illustrasjon

int fibn(n)
(
fib(n);
)
void main ()
(
fib(n);
)

Ovennevnte format er den direkte rekursive samtalen der den ringer umiddelbart / ringer av seg selv. Tenk på en andre type som kalles indirekte rekursjon som involverer en annen funksjonsanrop. Det kan sees i illustrasjonen nedenfor:

Indirekte rekursive: Illustrasjon

void f(int n) (
f1();
return;
)
void f2( int n) (
f();
return;
)
void f1() (
f2();
return;
)

Eksempler på rekursiv funksjon i C ++

I programmet nedenfor kan du se utførelsen av programmet som jeg har levert med standard grunnbetingelse. Noen ganger hjelper bruk av if-ellers tilstand i rekursjon til å forhindre uendelig rekursjon. Prosessen med koden lages med den delvise løsningen ved mellomproduktet og disse kombineres til en endelig løsning ved en halerekursjon.

Eksempel 1

Her er et enkelt eksempel på en Fibonacci-serie med et tall. Programmet nedenfor inkluderer en oppfordring til den rekursive funksjonen definert som fib (int n) som tar innspill fra brukeren og lagrer den i 'n'. Det neste trinnet inkluderer å ta for loop for å generere begrepet som sendes til funksjonsfiben () og returnerer Fibonacci-serien. Basetallet settes med if-setningen ved å sjekke tallet = 1 eller 2 for å skrive ut de to første verdiene. endelig fortsetter denne rekursive funksjonen med loopen for å skrive ut serien 1, 1, 2.

Kode:

#include
using namespace std;
int fib_r (int s)
(
if(s==1||s==2)
return 1;
else
return (fib_r(s-1) +fib_r(s-2)); // fib(n-1) + fib(n-2) for adding successive terms
)
int main ()
(
int k, n;
cout<<"Enter no.of n terms: ";
cin>>n;
cout<<" calculated fibonacci numbers are"< for (k=1; k<=n; k++)
cout< return 0;
)
#include
using namespace std;
int fib_r (int s)
(
if(s==1||s==2)
return 1;
else
return (fib_r(s-1) +fib_r(s-2)); // fib(n-1) + fib(n-2) for adding successive terms
)
int main ()
(
int k, n;
cout<<"Enter no.of n terms: ";
cin>>n;
cout<<" calculated fibonacci numbers are"< for (k=1; k<=n; k++)
cout< return 0;
)
#include
using namespace std;
int fib_r (int s)
(
if(s==1||s==2)
return 1;
else
return (fib_r(s-1) +fib_r(s-2)); // fib(n-1) + fib(n-2) for adding successive terms
)
int main ()
(
int k, n;
cout<<"Enter no.of n terms: ";
cin>>n;
cout<<" calculated fibonacci numbers are"< for (k=1; k<=n; k++)
cout< return 0;
)

Produksjon:

Eksempel 2

Kontroller om palindromnummeret bruker en rekursiv funksjon.

Kode:

#include
using namespace std;
int palim(int a, int t)
(
if (a == 0)
return t;
t = (t * 10) + (a % 10);
return palim(a / 10, t);
)
int main()
(
int n;
cout<>n;
int result = palim(n, 0);
if (result == n)
cout << "Number "< else
cout << "Number "< return 0;
)
#include
using namespace std;
int palim(int a, int t)
(
if (a == 0)
return t;
t = (t * 10) + (a % 10);
return palim(a / 10, t);
)
int main()
(
int n;
cout<>n;
int result = palim(n, 0);
if (result == n)
cout << "Number "< else
cout << "Number "< return 0;
)
#include
using namespace std;
int palim(int a, int t)
(
if (a == 0)
return t;
t = (t * 10) + (a % 10);
return palim(a / 10, t);
)
int main()
(
int n;
cout<>n;
int result = palim(n, 0);
if (result == n)
cout << "Number "< else
cout << "Number "< return 0;
)

Produksjon:

Eksempel 3

Program med en tilfeldig tallgenerator.

Kode:

#include
#include
#include
#include
using namespace std;
int rand1(int n);
int main () (
int n, j;
int r;
srand(time (NULL));
cout << "Enter number of dice: ";
cin >> n;
for (j = 1; j <= n; j++) (
r = rand1(5) + 1;
cout << r << " ";
)
system("PAUSE");
return 0;
)
int rand1(int n) (
return rand () % n;
)

Programmet over illustrerer en tilfeldig tallgenerator når en terning rulles tilfeldig. Det utføres ved å kalle en funksjon rand1 (int n) og genererer 0 til n-1 tall. og sette frøverdi med null (ingen adresse). For eksempel, hvis vi legger inn som 4, kaster det en mulighet for terningkast som 5, 4, 1, 2.

Produksjon:

Det er også noen begreper som lineær søk, felles divisor og viktigste fabrikksted for et gitt antall som bruker rekursiv implementering.

Pros of Recursion

  • Koden gitt av dem er ren og kompakt ved å forenkle det større komplekse programmet. Bruker færre variabler i programkoden.
  • Kompleks kode og nestet for løkker unngås her.
  • Noen deler av koden krever backtracking som løses rekursivt.

Cons of Recursion

  • Tar mer minnetildeling på grunn av stabelfunksjonen til alle funksjonssamtalene.
  • Den yter tregere noen ganger mens du utfører iterasjonsprosessen. Derfor er effektiviteten mindre.
  • Det er vanskelig for nybegynnere å forstå bruken, da noen ganger koden går i dybden. hvis fører til ut av plassen og forårsaker til slutt program krasj.

Konklusjon

Med dette har vi diskutert hvordan c ++ -funksjoner fungerer og definert rekursivt. Og vi har gått gjennom korrespondansen og deres fordeler og ulemper med rekursiv funksjon i programmeringsverdenen. Så fortsatte vi med å vise hvordan det kan implementeres i C ++ ved bruk av en rekursiv funksjonsdefinisjon. Videre konkluderer vi at rekursjon hjelper C ++ til å løse problemer i datastrukturkonsepter som gjennomgang, sortering og søking og kan brukes effektivt der det er behov.

Anbefalte artikler

Dette er en guide til rekursiv funksjon i C ++. Her diskuterer vi hvordan rekursiv funksjon fungerer i C ++, syntaks sammen med forskjellige eksempler og kodeimplementering. Du kan også se på følgende artikler for å lære mer -

  1. Hva er C ++ array-funksjoner?
  2. Oversikt over C ++ strengfunksjoner
  3. Beste C ++ -kompilator (eksempler)
  4. Introduksjon til C ++ -kommandoer
  5. Fibonacci-serien i Java
  6. Tilfeldig nummergenerator i Matlab
  7. Tilfeldig nummergenerator i C #
  8. Palindrome i C ++
  9. Tilfeldig nummergenerator i JavaScript
  10. Topp 11 funksjoner og fordeler med C ++
  11. Lær hva slags array-funksjoner i PHP