Recursieve functie in C # - Syntaxis & uitvoering van recursieve functie in C #

Inhoudsopgave:

Anonim

Inleiding tot recursieve functie in C #

In Recursive Function in C # betekent Recursion dezelfde betekenis als in de Engelse taal, precies bekend als zichzelf herhalen. Het recursieve karakter van een functie betekent dus dat u hetzelfde werk herhaaldelijk moet doen. En ja, als het programma niet correct wordt behandeld, zou het het programma zeker in een continue lus uitvoeren. We moeten ervoor zorgen dat we de juiste voorwaarden opgeven bij het uitvoeren van deze recursieve functies, anders zou de functie zichzelf steeds opnieuw aanroepen, wat leidt tot een continue uitvoering van het programma. Laten we hier doorgaan en kijken hoe we deze functies in C # kunnen creëren.

Syntaxis van recursieve functies in C #

De syntaxis is hier hetzelfde als de syntaxis van de basisfunctie in C #. Laten we hier eens kijken.

Er is hier geen speciale syntaxis, maar we kunnen vaststellen dat een functie zichzelf aanroept om het retourresultaat te leveren. En we moeten heel voorzichtig zijn bij het doorgeven van die parameterwaarden aan die recursieve functie, omdat we uiteraard geen actieve code willen die niet stopt.

In de bovenstaande syntaxis gaat er niets boven, we moeten de functie alleen in retourinstructies aanroepen. We kunnen zelfs de waarde van de recursieve functie retourneren aan een variabele en die variabele ook retourneren.

Uitvoering van ontbinding

Laten we hier onze standaard probleemstelling, ontbinding, nemen voor het genereren van onze recursieve functie.

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

Laten we het stapsgewijze proces bekijken.

  1. Eerst hebben we onze eigen geparametriseerde functie gemaakt om een ​​invoerwaarde van de hoofdfunctie te nemen, waarvoor we de faculteit willen berekenen.
  2. Vervolgens hebben we een if-voorwaarde gemaakt om te controleren of het gegeven getal nul is. Als het getal nul is, retourneren we 1 als onze standaardwaarde.
  3. Anders vermenigvuldigen we het huidige getal met de functie met het getal min 1 als parameter.
  4. Dus deze vermenigvuldiging herhaalt zich totdat we bij nummer 0 komen. Omdat we standaard onze output voor nul als 1 hebben geschreven, zou het eindresultaat worden vermenigvuldigd met 1.

Output:

Nu ga ik in de code onze functieparameter vervangen van num minus 1 tot, num. In dit geval zou de functie zichzelf steeds opnieuw aanroepen en zou het proces zich herhalen.

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

Output:

Door de bovenstaande uitvoer kunnen we duidelijk de uitzondering voor stapeloverloop zien, waarbij de functie zichzelf herhaaldelijk aanroept. Alleen het gemarkeerde gedeelte is gewijzigd ten opzichte van het eerste programma.

Op dezelfde manier kunnen we het nummer als een gebruiker ingevoerde waarde maken zoals hieronder:

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

Output:

Wat als we nul als invoer geven? Ja, er zou er één worden teruggestuurd.

Output:

Wat als we een negatief getal geven?

Output:

Dit gaf me ook een Stack-overflow-uitzondering, omdat onze factoriële recursiefunctie de waarde van de parameter bij elke uitvoering verlaagt. De negatieve getallen zouden dus blijven dalen tot -6, -7, -8 enzovoort. Dat is de reden waarom we naar deze uitzondering gaan.

Kun je als oefening proberen een recursieve functie voor negatieve getallen te maken?

Hint: we kunnen een voorafgaande voorwaarde van getal kleiner dan nul nemen en er een toevoegen aan onze parameter recursieve functie totdat nul komt.

Voorbeelden van recursieve functie in C #

Er zijn enkele goede voorbeelden die kunnen worden geciteerd met betrekking tot de recursieve functies:

We hebben nog een paar andere plaatsen waar we deze recursieve functies kunnen gebruiken.

  • Druk nummers continu af vanaf een bepaald startpunt en eindpunt. (Programma hieronder)
  • Voeg getallen toe vanaf een bepaald startpunt en stop bij het eindpunt of wanneer een bepaalde som wordt bereikt.
  • Druk nummers af die worden gedeeld door een bepaald nummer in een bepaald bereik.
  • We willen na het schrijven van een zin een willekeurig aantal doorlopende lijnen of punten afdrukken en nog veel meer.

Zoals u kunt zien, is de recursieve functie vergelijkbaar met de functionaliteit van een lus, maar waarbij we dezelfde functie herhaaldelijk aanroepen.

Laten we eens kijken hoe we een recursieve functie kunnen schrijven door getallen continu toe te voegen totdat het programma het tweede getal vindt dat als invoer wordt gegeven.

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

Hier is wat we deden:

  • We hebben twee nummers num1 en num2 genomen via gebruikersinvoer
  • Functie toevoegen, voegt de getallen toe vanaf nummer1 tot het nummer 2 wordt.

Als ik bijvoorbeeld num1 = 5 en num2 = 8 neem, is de uitvoersom die we krijgen 5 + 6 + 7 + 8, wat 26 is.

Output:

En wat als, ik geef num1 minder dan num2?

Output:

Het geeft als eerste de waarde num1, we hebben de somwaarde toegewezen aan de waarde num1 en de som geretourneerd als de instructie if niet van toepassing is.

Als oefening kunt u een recursieve functie schrijven om "Ik hou van codering" af te drukken totdat deze aan een bepaalde voorwaarde voldoet?

Hint: We kunnen dezelfde procedure voor het toevoegen volgen die in het bovenstaande programma wordt gedaan.

Conclusie

Dus, hier hebben we met succes de uitvoering van recursieve functies gekregen, hoe deze functies worden genoemd en een paar voorbeelden ervan. We hebben ook geleerd hoe een eenvoudig verschil in het aanroepen van een functie ervoor kan zorgen dat het programma buiten zijn grenzen raakt en een uitzondering maakt.

Aanbevolen artikelen

Dit is een gids voor recursieve functie in C #. Hier bespreken we de uitvoering voor het genereren van een recursieve functie met zijn voorbeelden. U kunt ook onze andere gerelateerde artikelen doornemen voor meer informatie-

  1. Anonieme functies in Matlab
  2. Tableau String-functies
  3. Wat is functionele testen?
  4. C # Functies
  5. Inleiding tot recursieve functie in C ++
  6. Leer de 3 manieren om Java User Input te lezen