Introduction à la fonction récursive en C #
Dans la fonction récursive en C #, la récursivité signifie désigner la même signification que dans la langue anglaise, précisément connue comme se répétant. Ainsi, la nature récursive d'une fonction dénote la répétition du même travail. Et, oui, si le programme n'est pas géré correctement, il exécuterait certainement le programme dans une boucle continue. Nous devons nous assurer de spécifier les conditions appropriées dans l'exécution de ces fonctions récursives, sinon la fonction s'appellerait elle-même, encore et encore, conduisant à une exécution continue du programme. Voyons maintenant comment créer ces fonctions en C #.
Syntaxe des fonctions récursives en C #
La syntaxe ici est la même que la syntaxe de fonction de base en C #. Jetons un coup d'œil ici.
Il n'y a pas de syntaxe spéciale ici, mais nous pouvons observer qu'une fonction s'appelle elle-même en fournissant le résultat de retour. Et nous devons être très prudents en passant ces valeurs de paramètres dans cette fonction récursive car, évidemment, nous ne voulons pas d'un code en cours d'exécution qui ne s'arrête pas.
Dans la syntaxe ci-dessus, il n'y a rien de tel, nous devons appeler la fonction uniquement dans les instructions de retour. Au contraire, nous pouvons même attribuer la valeur de retour de la fonction récursive à une variable et renvoyer cette variable également.
Exécution de la factorisation
Prenons ici notre énoncé de problème par défaut, la factorisation, pour générer notre fonction récursive.
Code:
using System;
class First (
static void Main() (
int result;
result = fact(7);
Console.WriteLine("Factorial is : " + result);
)
public static int fact(int num)
(
if(num==0)
(
return 1;
)
return num*fact(num-1);
)
)
Voyons le processus étape par étape.
- Premièrement, nous avons créé notre propre fonction paramétrée pour prendre une valeur d'entrée de la fonction principale, pour laquelle nous voulons calculer la factorielle.
- Ensuite, nous avons fait une condition if pour vérifier si le nombre donné est zéro. Si le nombre est zéro, nous renvoyons 1 comme valeur par défaut.
- Sinon, nous multiplions le nombre actuel par la fonction prenant le nombre moins 1 comme paramètre.
- Donc, cette multiplication se répète jusqu'à ce que nous arrivions au numéro 0. Comme par défaut, nous avons écrit notre sortie de retour pour zéro comme 1, le résultat final serait multiplié par 1.
Production:
Maintenant, dans le code, je vais remplacer notre paramètre de fonction de num moins 1 à, num. Dans ce cas, la fonction s'appellerait encore et encore et le processus se répéterait.
Code:
using System;
class First (
static void Main() (
int result;
result = fact(7);
Console.WriteLine("Factorial is : " + result);
)
public static int fact(int num)
(
if(num==0)
(
return 1;
)
return num*fact(num);
)
)
Production:
Grâce à la sortie ci-dessus, nous pouvons clairement voir l'exception de débordement de pile, où la fonction s'appelle à plusieurs reprises. Seule la partie en surbrillance est modifiée par rapport au premier programme.
De la même manière, nous pouvons faire le nombre comme une valeur entrée par l'utilisateur comme ci-dessous:
Code:
using System;
class First (
static void Main() (
int result, c;
string a;
Console.Write("Enter value for number :");
a = Console.ReadLine();
c = Convert.ToInt32(a);
result = fact(c);
Console.WriteLine("Factorial is : " + result);
)
public static int fact(int num)
(
if(num==0)
(
return 1;
)
return num*fact(num-1);
)
)
Production:
Et si nous donnons zéro comme entrée? Oui, un serait retourné.
Production:
Et si nous donnions un nombre négatif?
Production:
Cela m'a également donné une exception de dépassement de pile, car notre fonction de récursion factorielle diminue sa valeur de paramètre à chaque exécution. Ainsi, les nombres négatifs continueraient d'être réduits à -6, -7, -8 et ainsi de suite. C'est la raison pour laquelle nous allons à cette exception.
Comme exercice, pouvez-vous essayer de créer une fonction récursive pour les nombres négatifs?
Astuce: Nous pouvons prendre une condition préalable de nombre inférieur à zéro et ajouter un à notre paramètre de fonction récursive jusqu'à ce que zéro arrive.
Exemples de fonction récursive en C #
Il y a peu de bons exemples qui peuvent être cités en ce qui concerne les fonctions récursives:
Nous avons quelques autres endroits où nous pouvons utiliser ces fonctions récursives.
- Imprimez des nombres à partir d'un point de départ et d'un point d'arrivée donnés en continu. (Programme ci-dessous)
- Ajoutez des nombres à partir d'un point de départ donné et arrêtez-vous au point final ou lorsqu'une somme particulière est atteinte.
- Imprimez des nombres qui sont divisés par un nombre particulier dans une plage particulière.
- Nous voulons imprimer n'importe quel nombre de lignes ou de points continus après avoir écrit une phrase et bien d'autres.
Comme vous pouvez le constater, la fonction récursive est similaire à la fonctionnalité d'une boucle, mais où nous appelons la même fonction à plusieurs reprises.
Voyons comment nous pouvons écrire une fonction récursive en ajoutant des nombres en continu jusqu'à ce que le programme trouve le deuxième nombre qui est donné en entrée.
Code:
using System;
class First (
static void Main() (
int result, c, d;
string a, b;
Console.Write("Enter value for 1st number :");
a = Console.ReadLine();
c = Convert.ToInt32(a);
Console.Write("Enter value for 2nd number :");
b = Console.ReadLine();
d = Convert.ToInt32(b);
result = add(c, d);
Console.WriteLine("Add is : " + result);
)
public static int add(int num1, int num2)
(
int sum ;
sum=num1;
if (num1 < num2 )
(
num1++;
sum=sum+add(num1, num2);
return sum;
)
return sum;
)
)
Ici, ce que nous avons fait, c'est:
- Nous avons pris deux nombres num1 et num2 via les entrées utilisateur
- Ajouter une fonction, ajoute les nombres à partir de num1 jusqu'à ce qu'il obtienne num2.
Par exemple, si je prends num1 = 5 et num2 = 8, alors la somme de sortie que nous obtenons est 5 + 6 + 7 + 8, ce qui est 26.
Production:
Et si, je donne num1 moins que num2?
Production:
Il en donne comme valeur num1 comme premier, nous avons attribué la valeur sum à la valeur num1 et renvoyant sum si l'instruction if n'est pas applicable.
Comme exercice, pouvez-vous écrire une fonction récursive pour imprimer «j'aime coder» jusqu'à ce qu'elle suive une certaine condition?
Astuce: Nous pouvons suivre la même procédure d'ajout qui se fait dans le programme ci-dessus.
Conclusion
Donc, ici, nous avons réussi à exécuter des fonctions récursives, comment ces fonctions sont appelées et quelques exemples d'entre elles. Nous avons également appris comment une simple différence dans l'appel d'une fonction peut faire fonctionner le programme hors de ses limites et créer une exception.
Articles recommandés
Ceci est un guide de la fonction récursive en C #. Nous discutons ici de l'exécution pour générer une fonction récursive avec ses exemples. Vous pouvez également consulter nos autres articles connexes pour en savoir plus-
- Fonctions anonymes dans Matlab
- Fonctions de chaîne de Tableau
- Qu'est-ce qu'un test fonctionnel?
- Fonctions C #
- Introduction à la fonction récursive en C ++
- Apprenez les 3 façons de lire les entrées utilisateur Java