Introduction à la fonction récursive en C ++

Pour commencer avec la fonction récursive en C ++, nous avons déjà connu l'idée de base derrière les fonctions C ++ qui inclut la définition de fonction pour appeler également d'autres fonctions. Et cet article couvre le concept derrière la définition récursive, un concept d'outil de jeu en mathématiques et en logique de programmation. Un exemple familier comprend la factorielle d'un nombre, la somme de «n» nombres naturels, etc. Une fonction qui appelle par elle-même est appelée fonction récursive. Ce n'est qu'une fonction qui est invoquée à plusieurs reprises. La récursivité a un outil de résolution de problèmes, où il divise les problèmes plus importants en tâches simples et travaille individuellement pour suivre une séquence individuelle.

Les concepts de structures de données comme la recherche, le tri, la traversée d'un arbre utilisent la fonction récursive pour ses solutions. Cette technique de programmation facilite le code. L'itération et la récursivité font le même processus qu'une répétition du code, mais la différence dans la récursivité est qu'elles exécutent une partie spécifique avec la fonction de base elle-même. Dans cet article, nous discuterons de l'importance de la récursivité et de leur processus de travail avec un exemple en détail.

Syntaxe de la fonction récursive en C ++

La syntaxe générale de la fonction récursive en c ++ est donnée comme suit:

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

Comment fonctionne la fonction récursive en C ++?

La récursion effectue la répétition sur les appels de fonction et arrête l'exécution lorsque le cas de base devient vrai. Une condition de cas de base doit être définie dans la fonction récursive pour éviter le message d'erreur de dépassement de pile. Si aucun cas de base n'est défini, cela conduit à une récursion infinie. Lorsqu'une fonction est appelée, elle les pousse à chaque fois dans une pile pour réserver les ressources pour chaque appel de répétition. Il donne le meilleur de la traversée des arbres. Il existe deux types de récursivité: la récursivité directe et indirecte.

Récursif direct: illustration

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

Le format ci-dessus est l'appel récursif direct où il appelle immédiatement / appel par lui-même. Considérons un second type appelé récursion indirecte qui implique un autre appel de fonction. Il peut être consulté dans l'illustration ci-dessous:

Récursif indirect: illustration

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

Exemples de fonction récursive en C ++

Dans le programme ci-dessous, vous pouvez voir l'exécution du programme que j'ai fourni avec la condition de base par défaut. Parfois, l'utilisation de la condition if-else dans la récursivité permet d'éviter une récursion infinie. Le processus du code est fait avec la solution partielle à l'intermédiaire et ceux-ci sont combinés à une solution finale à une récursion de queue.

Exemple 1

Voici un exemple simple d'une série de Fibonacci d'un nombre. Le programme ci-dessous comprend un appel à la fonction récursive définie comme fib (int n) qui prend l'entrée de l'utilisateur et la stocke dans 'n'. L'étape suivante consiste à utiliser la boucle for pour générer le terme qui est transmis à la fonction fib () et renvoie la série de Fibonacci. Le cas de base est défini avec l'instruction if en vérifiant le nombre = 1 ou 2 pour imprimer les deux premières valeurs. enfin, cette fonction récursive continue avec la boucle pour imprimer la série 1, 1, 2.

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

Production:

Exemple # 2

Vérification du nombre de palindrome à l'aide d'une fonction récursive.

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

Production:

Exemple # 3

Programmez avec un générateur de nombres aléatoires.

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

Le programme ci-dessus illustre un générateur de nombres aléatoires quand un dé est lancé au hasard. Elle est effectuée en appelant une fonction rand1 (int n) et génère 0 à n-1 nombres. et définir la valeur de départ avec null (pas d'adresse). Par exemple, si nous saisissons 4, cela ouvre une possibilité de dés de 5, 4, 1, 2.

Production:

Il existe également certains concepts comme la recherche linéaire, le diviseur commun et la factorielle la plus importante d'un nombre donné qui utilise une implémentation récursive.

Avantages de la récursivité

  • Le code fourni par eux est propre et compact en simplifiant le plus grand programme complexe. Utilise moins de variables dans le code du programme.
  • Le code complexe et les boucles imbriquées sont évités ici.
  • Une partie du code nécessite un retour en arrière qui est résolu récursivement.

Inconvénients de la récursivité

  • Prend plus d'allocation de mémoire en raison de l'opération de pile de tous les appels de fonction.
  • Il s'exécute parfois plus lentement lors de l'exécution du processus d'itération. Par conséquent, l'efficacité est moindre.
  • Il est difficile pour les débutants de comprendre le fonctionnement car parfois le code va en profondeur. si conduit à un manque d'espace et provoque finalement des plantages du programme.

Conclusion

Avec cela, nous avons discuté de la façon dont les fonctions c ++ fonctionnent et définies de manière récursive. Et, nous avons parcouru la correspondance et leurs avantages et inconvénients de la fonction récursive dans le monde de la programmation. Ensuite, nous avons poursuivi en montrant comment il peut être implémenté en C ++ en utilisant une définition de fonction récursive. En outre, nous concluons que la récursivité aide en C ++ à résoudre des problèmes dans les concepts de structure de données comme les traversées, le tri et la recherche et peut être utilisé efficacement partout où cela est nécessaire.

Articles recommandés

Ceci est un guide de la fonction récursive en C ++. Nous discutons ici du fonctionnement de la fonction récursive en C ++, de la syntaxe ainsi que des différents exemples et de l'implémentation du code. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Qu'est-ce que les fonctions de tableau C ++?
  2. Présentation des fonctions de chaîne C ++
  3. Meilleur compilateur C ++ (exemples)
  4. Introduction aux commandes C ++
  5. Série Fibonacci en Java
  6. Générateur de nombres aléatoires dans Matlab
  7. Générateur de nombres aléatoires en C #
  8. Palindrome en C ++
  9. Générateur de nombres aléatoires en JavaScript
  10. Les 11 principales fonctionnalités et avantages de C ++
  11. Apprenez les types de fonctions de tableau en PHP