Uvod v rekurzivno delovanje v C ++

Za začetek s rekurzivno funkcijo v C ++, smo že poznali osnovno idejo funkcij C ++, ki vključuje definicijo funkcije, da pokličemo tudi druge funkcije. In ta članek zajema koncept rekurzivne definicije, koncept orodja za igro v matematiki in logiki programiranja. Znan primer vključuje faktorje števila, seštevek naravnih števil 'n' itd. Funkcija, ki sama kliče, je znana kot rekurzivna funkcija. So le funkcija, ki se jo večkrat prikliče. Rekurzija ima orodje za reševanje problemov, kjer večje težave razdeli na enostavne naloge in individualno oblikuje sledenje posameznemu zaporedju.

Koncepti podatkovnih struktur, kot so iskanje, razvrščanje, prehod drevesa, za svoje rešitve uporabljajo rekurzivno funkcijo. Ta tehnika programiranja olajša kodo. Tako iteracija kot rekurzija delujeta enako kot ponovitev kode, razlika v rekurziji pa je v tem, da sami izvajajo določen del z osnovno funkcijo. V tem članku bomo podrobno obravnavali pomen rekurzije in njihov delovni proces.

Sintaksa rekurzivne funkcije v C ++

Splošna sintaksa rekurzivne funkcije v c ++ je podana kot:

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

Kako deluje rekurzivna funkcija v C ++?

Rekurzija izvede ponavljanje na klicih funkcije in ustavi izvedbo, ko osnovni primer postane resničen. V rekurzivni funkciji je treba določiti stanje osnovnega primera, da se prepreči sporočilo o napaki pri prelivanju skladov. Če ni definiran noben osnovni primer, to vodi v neskončno rekurzijo. Ko se imenuje funkcija, jih vsakič potisne v kup za rezervne vire za vsak ponovitveni klic. Daje najboljše pri prečkanju dreves. Obstajata dve različni vrsti rekurzije: neposredna in posredna rekurzija.

Neposredna rekurzivnost: Ilustracija

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

Zgornja oblika je neposreden rekurzivni klic, kjer takoj pokliče / pokliče sam. Razmislite o drugi vrsti, imenovani indirektna rekurzija, ki vključuje drug klic funkcije. Ogledate si ga lahko na spodnji sliki:

Posredna rekurzivna: ilustracija

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

Primeri rekurzivne funkcije v C ++

V spodnjem programu si lahko ogledate izvedbo programa, ki sem mu zagotovil privzeti osnovni pogoj. Včasih uporaba pogojev if-else v rekurziji pomaga preprečiti neskončno rekurzijo. Postopek kode je narejen z delno raztopino na vmesnem območju, ki se združijo v končno raztopino ob rekurziji repa.

Primer # 1

Tu je preprost primer niza Fibonaccijeve številke. Spodnji program vključuje klic na rekurzivno funkcijo, definirano kot fib (int n), ki uporabnik sprejme vnos in ga shrani v 'n'. Naslednji korak vključuje sprejem zanke za ustvarjanje izraza, ki je poslan v funkcijo fib (), in vrne niz Fibonaccije. Osnovni primer je nastavljen s stavkom if s preverjanjem številke = 1 ali 2 za tiskanje prvih dveh vrednosti. končno se ta rekurzivna funkcija nadaljuje z zanko, da natisne serijo 1, 1, 2.

Koda:

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

Izhod:

Primer # 2

Preverjanje palindromove številke s pomočjo rekurzivne funkcije.

Koda:

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

Izhod:

Primer # 3

Program z generatorjem naključnih števil

Koda:

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

Zgornji program prikazuje generator naključnih števil, ko se kocke naključno valjajo. Izvaja se s klicanjem funkcije rand1 (int n) in ustvari od 0 do n-1 številk. in nastavitev vrednosti semena z ničelno (brez naslova). Na primer, če vnesemo kot 4, vrže možnost kocke kot 5, 4, 1, 2.

Izhod:

Obstaja tudi nekaj pojmov, kot so linearno iskanje, skupni delitelj in najpomembnejši faktor določenega števila, ki uporablja rekurzivno izvajanje.

Prednosti rekurzije

  • Koda, ki jo zagotavljajo, je čista in kompaktna s poenostavitvijo večjega zapletenega programa. V programski kodi uporablja manj spremenljivk.
  • Tu se izognemo zapleteni kodi in ugnezdenih zank.
  • Nekateri del kode zahteva povratno sledenje, ki se reši rekurzivno.

Slabosti rekurzije

  • Zaradi večje razporeditve pomnilnika zaradi delovanja zlaganja vseh funkcijskih klicev.
  • Včasih deluje počasneje, medtem ko izvaja postopek iteracije. Zato je učinkovitost manjša.
  • Začetniki težko razumejo delovanje, saj včasih koda postane poglobljena. če pripelje do prostora in povzroči zrušitev programa.

Zaključek

S tem smo razpravljali o delovanju funkcij c ++ in definiranju rekurzivno. In dočakali smo dopisovanje in njihove prednosti in slabosti rekurzivne funkcije v programskem svetu. Nato smo nadaljevali s prikazom, kako se lahko izvaja v C ++ z uporabo rekurzivne definicije funkcije. Nadalje zaključujemo, da rekurzija pomaga pri C ++ pri reševanju težav v konceptih strukture podatkov, kot so pohodi, razvrščanje in iskanje in jih je mogoče učinkovito uporabiti, kadar koli je to potrebno.

Priporočeni članki

To je vodnik za rekurzivno funkcijo v C ++. Tukaj razpravljamo o tem, kako deluje rekurzivna funkcija v C ++, sintaksi skupaj z različnimi primeri in implementacijo kode. Če želite izvedeti več, si oglejte tudi naslednje članke -

  1. Kaj so funkcije matrike C ++?
  2. Pregled nizov funkcij C ++
  3. Najboljši C ++ prevajalnik (primeri)
  4. Uvod v C ++ ukaze
  5. Serija Fibonaccije na Javi
  6. Generator naključnih števil v Matlabu
  7. Generator naključnih števil v C #
  8. Palindrom v C ++
  9. Generator naključnih števil v JavaScript
  10. 11 najboljših lastnosti in prednosti C ++
  11. Naučite se vrst funkcij matrike v PHP