Inleiding tot recursieve functie in C ++

Om te beginnen met recursieve functie in C ++, wisten we al het basisidee achter C ++ -functies, dat functiedefinitie bevat om ook andere functies aan te roepen. En dit artikel behandelt het concept achter de recursieve definitie, een speelgereedschapconcept in wiskunde en programmeerlogica. Een bekend voorbeeld omvat de faculteit van een getal, de som van de natuurlijke getallen 'n', enz. Een functie die op zichzelf wordt genoemd, wordt Recursieve functie genoemd. Ze zijn slechts een functie die herhaaldelijk wordt aangeroepen. Recursie heeft een probleemoplossend hulpmiddel, waarbij het de grotere problemen verdeelt in eenvoudige taken en individueel traint om een ​​individuele volgorde te volgen.

De datastructurenconcepten zoals zoeken, sorteren, doorkruisen van een boom maken gebruik van de recursieve functie voor zijn oplossingen. Deze programmeertechniek maakt code eenvoudiger. Zowel iteratie als recursie doen hetzelfde proces als een herhaling van de code, maar het verschil in recursie is dat ze een specifiek onderdeel uitvoeren met de basisfunctie zelf. In dit artikel zullen we het recursieve belang en hun werkproces in detail bespreken met een voorbeeld.

Syntaxis van recursieve functie in C ++

De algemene syntaxis van de recursieve functie in c ++ wordt gegeven als:

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

Hoe werkt Recursieve functie in C ++?

Recursion voert herhaling uit op de functieaanroepen en stopt de uitvoering wanneer het basisscenario waar wordt. Een basisgevalvoorwaarde moet worden gedefinieerd in de recursieve functie om een ​​foutmelding stackoverloop te voorkomen. Als er geen basisgeval is gedefinieerd, leidt dit tot oneindige recursie. Wanneer een functie wordt aangeroepen, worden deze telkens in een stapel geplaatst voor het reserveren van bronnen voor elke herhalingsoproep. Het geeft het beste in boom doorkruisen. Er zijn twee verschillende soorten recursie: directe en indirecte recursie.

Direct recursief: illustratie

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

Het bovenstaande formaat is de directe recursieve aanroep waar deze direct / zelf belt. Overweeg een tweede type genaamd indirecte recursie dat een andere functieaanroep inhoudt. Het kan worden bekeken in de onderstaande afbeelding:

Indirect recursief: illustratie

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

Voorbeelden van recursieve functie in C ++

In het onderstaande programma kunt u de uitvoering zien van het programma dat ik heb voorzien van de standaard basisvoorwaarde. Soms helpt het gebruik van de if-else-conditie bij recursie om oneindige recursie te voorkomen. Het proces van de code wordt gemaakt met de gedeeltelijke oplossing aan het tussenproduct en deze worden gecombineerd tot een uiteindelijke oplossing bij een staartrecursie.

Voorbeeld 1

Hier is een eenvoudig voorbeeld van een Fibonacci-reeks van een nummer. Het onderstaande programma bevat een aanroep van de recursieve functie gedefinieerd als fib (int n) die invoer van de gebruiker neemt en opslaat in 'n'. De volgende stap omvat het opnemen van een lus om de term te genereren die wordt doorgegeven aan de functie fib () en de Fibonacci-reeks retourneert. Het basisgeval wordt ingesteld met de instructie if door het getal = 1 of 2 aan te vinken om de eerste twee waarden af ​​te drukken. ten slotte gaat deze recursieve functie door met de lus om de reeks 1, 1, 2 af te drukken.

Code:

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

Output:

Voorbeeld 2

Controleren op het palindroomnummer met behulp van een recursieve functie.

Code:

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

Output:

Voorbeeld 3

Programma met een generator van willekeurige getallen.

Code:

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

Het bovenstaande programma illustreert een random number generator wanneer een dobbelsteen willekeurig wordt gegooid. Het wordt uitgevoerd door een functie rand1 (int n) aan te roepen en genereert 0 tot n-1 nummers. en het instellen van de zaadwaarde met null (geen adres). Als we bijvoorbeeld 4 invoeren, geeft dit de mogelijkheid van dobbelstenen als 5, 4, 1, 2.

Output:

Er zijn ook enkele concepten zoals lineair zoeken, gemene deler en belangrijkste faculteit van een bepaald getal dat gebruik maakt van recursieve implementatie.

Voordelen van recursie

  • De door hen verstrekte code is schoon en compact door het grotere complexe programma te vereenvoudigen. Gebruikt minder variabelen in de programmacode.
  • Complexe code en geneste for-lussen worden hier vermeden.
  • Een deel van de code vereist backtracking die recursief wordt opgelost.

Nadelen van recursie

  • Neemt meer geheugentoewijzing vanwege de stapelbewerking van alle functieaanroepen.
  • Het werkt soms langzamer tijdens het uitvoeren van het iteratieproces. Daarom is de efficiëntie minder.
  • Het is moeilijk voor beginners om de werking te begrijpen, omdat de code soms diepgaand gaat. als dit leidt tot onvoldoende ruimte en uiteindelijk programma-crashes veroorzaakt.

Conclusie

Hiermee hebben we besproken hoe c ++ functies werken en recursief gedefinieerd. En we hebben de correspondentie en hun voor- en nadelen van recursieve functies in de programmeerwereld doorlopen. Daarna gingen we verder door te laten zien hoe het kan worden geïmplementeerd in C ++ met behulp van een recursieve functiedefinitie. Verder concluderen we dat recursie in C ++ helpt bij het oplossen van problemen in datastructuurconcepten zoals traversals, sorteren en zoeken en effectief kan worden gebruikt waar dat nodig is.

Aanbevolen artikelen

Dit is een gids voor recursieve functie in C ++. Hier bespreken we hoe recursieve functie werkt in C ++, syntaxis samen met verschillende voorbeelden en code-implementatie. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Wat is C ++ Array Functions?
  2. Overzicht van C ++ String-functies
  3. Beste C ++ Compiler (voorbeelden)
  4. Inleiding tot C ++ -opdrachten
  5. Fibonacci-serie in Java
  6. Willekeurige nummergenerator in Matlab
  7. Willekeurige nummergenerator in C #
  8. Palindrome in C ++
  9. Willekeurige nummergenerator in JavaScript
  10. Top 11 kenmerken en voordelen van C ++
  11. Leer de soorten array-functies in PHP