Rekursiv funksjon i C # - Syntaks og utførelse av rekursiv funksjon i C #

Innholdsfortegnelse:

Anonim

Introduksjon til rekursiv funksjon i C #

I rekursiv funksjon i C #, betyr rekursjon å betegne den samme betydningen som på det engelske språket, nøyaktig kjent som å repetere seg selv. Så den rekursive naturen til en funksjon betegner å gjøre det samme arbeidet gjentatte ganger. Og ja, hvis programmet ikke blir håndtert riktig, vil det definitivt kjøre programmet i en kontinuerlig loop. Vi må sørge for at vi spesifiserer riktige betingelser for å utføre disse rekursive funksjonene, ellers vil funksjonen ringe seg selv igjen og igjen, noe som fører til en kontinuerlig utførelse av programmet. La oss gå foran og se på hvordan vi kan lage disse funksjonene i C #.

Syntaks for rekursive funksjoner i C #

Syntaksen her er den samme som den grunnleggende funksjonssyntaks i C #. La oss ta en titt her.

Det er ingen spesiell syntaks her, men vi kan observere at en funksjon kaller seg selv for å gi returresultatet. Og vi må være veldig forsiktige med å føre disse parameterverdiene til den rekursive funksjonen, da vi tydeligvis ikke vil ha en løpekode som ikke stopper.

I syntaksen ovenfor er det ingenting som, vi må ringe funksjonen bare i returutsagn. Snarere kan vi til og med tilordne den rekursive funksjonens returverdi til en variabel og returnere den variabelen også.

Utførelse av faktorisering

La oss her ta vår standard problemstilling, faktorisering, for å generere vår rekursive funksjon.

Kode:

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

La oss se på trinnvis prosess.

  1. Først har vi laget vår egen parameteriserte funksjon for å ta en inngangsverdi fra hovedfunksjonen, som vi ønsker å beregne fakultetet for.
  2. Deretter laget vi en if-betingelse for å sjekke om det gitte tallet er null. Hvis tallet er null, returnerer vi 1 som standardverdi.
  3. Ellers, multipliserer vi det nåværende tallet med funksjonen som tar inn tallet minus 1 som sin parameter.
  4. Så, denne multiplikasjonen gjentar seg til vi kommer til nummer 0. Som standard har vi skrevet returutgangen for null som 1, ville det endelige resultatet ganges med 1.

Produksjon:

Nå, i koden, skal jeg erstatte funksjonsparameteren vår fra num minus 1 til, num. I dette tilfellet vil funksjonen ringe seg igjen og igjen, og prosessen vil gjenta seg.

Kode:

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

Produksjon:

Gjennom den ovennevnte utskriften kan vi tydelig se unntaket fra stabletoverløp, der funksjonen gjentatte ganger kaller seg. Bare den uthevede delen endres med hensyn til det første programmet.

På samme måte kan vi oppgi tallet som en bruker som er lagt inn verdi som nedenfor:

Kode:

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

Produksjon:

Hva om vi gir null som innspill? Ja, en ville bli returnert.

Produksjon:

Hva om vi gir et negativt tall?

Produksjon:

Dette ga meg et unntak fra Stack overflow også, da vår faktorale rekursjonsfunksjon reduserer parameterens verdi på hver utførelse. Så ville de negative tallene fortsette redusert til -6, -7, -8 og så videre. Det er grunnen til at vi går til dette unntaket.

Kan du prøve å lage en rekursiv funksjon for negative tall?

Tips: Vi kan ta en forutsetning om antall mindre enn null og legge en til vår rekursive funksjonsparameter til null kommer.

Eksempler på rekursiv funksjon i C #

Det er få gode eksempler som kan siteres med hensyn til de rekursive funksjonene:

Vi har noen få andre steder hvor vi kan bruke disse rekursive funksjonene.

  • Skriv ut numre fra et gitt startpunkt og sluttpunkt kontinuerlig. (Program under)
  • Legg til tall som starter fra et gitt startpunkt og stopp ved endepunktet eller når en bestemt sum er nådd.
  • Skriv ut tall som er delt på et bestemt nummer i et bestemt område.
  • Vi vil skrive ut hvilket som helst av antall sammenhengende linjer eller prikker etter å ha skrevet en setning og mange flere.

Som du kan observere rekursiv funksjon ligner funksjonaliteten til en sløyfe, men der vi kaller den samme funksjonen gjentatte ganger.

La oss se hvordan vi kan skrive en rekursiv funksjon ved å legge til tall kontinuerlig til programmet finner det andre tallet som er gitt som input.

Kode:

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

Det vi gjorde her er:

  • Vi har tatt to tall num1 og num2 gjennom brukerinnganger
  • Legg til funksjon, legger til tallene som starter fra num1 til den får num2.

Hvis jeg for eksempel tar num1 = 5 og num2 = 8, så er output summen vi får 5 + 6 + 7 + 8, som er 26.

Produksjon:

Og hva hvis jeg gir num1 mindre enn num2?

Produksjon:

Det gir noen som num1-verdien som først, vi tildelte sumverdien til num1-verdi og returnerende sum hvis if-setningen ikke er aktuelt.

Som en øvelse kan du skrive en rekursiv funksjon for å skrive ut “Jeg liker koding” til den følger en viss betingelse?

Tips: Vi kan følge den samme prosedyren for å legge til som gjøres i programmet ovenfor.

Konklusjon

Så her har vi fått gjennomføringen av rekursive funksjoner, hvordan disse funksjonene kalles og noen få eksempler på dem. Vi lærte også hvordan en enkel forskjell i å ringe til en funksjon kan gjøre at programmet går tom for rammer og skaper et unntak.

Anbefalte artikler

Dette er en guide til rekursiv funksjon i C #. Her diskuterer vi utførelsen for generering av rekursiv funksjon med eksemplene. Du kan også gå gjennom andre relaterte artikler for å lære mer-

  1. Anonyme funksjoner i Matlab
  2. Tableau-strengfunksjoner
  3. Hva er funksjonstesting?
  4. C # Funksjoner
  5. Introduksjon til rekursiv funksjon i C ++
  6. Lær de tre måtene å lese Java-brukerinndata på