Introduktion til rekursiv funktion i C #
I rekursiv funktion i C # betyder rekursion at betegne den samme betydning som på det engelske sprog, nøjagtigt kendt som gentagelse af sig selv. Så den rekursive karakter af en funktion betegner at udføre det samme arbejde gentagne gange. Og ja, hvis programmet ikke håndteres korrekt, vil det bestemt køre programmet i en kontinuerlig løkke. Vi er nødt til at sikre, at vi specificerer de rette betingelser for at udføre disse rekursive funktioner, ellers vil funktionen kalde sig selv igen og igen, hvilket fører til en kontinuerlig eksekvering af programmet. Lad os her gå videre og se på, hvordan vi kan oprette disse funktioner i C #.
Syntaks for rekursive funktioner i C #
Syntaxen her er den samme som den grundlæggende funktionssyntaks i C #. Lad os se her.
Der er ingen speciel syntaks her, men vi kan konstatere, at en funktion kalder sig selv til at levere returresultatet. Og vi må være meget forsigtige med at videregive disse parameterværdier til den rekursive funktion, da vi selvfølgelig ikke ønsker en kørselskode, der ikke stopper.
I ovenstående syntaks er der intet, vi er nødt til at kalde funktionen kun til gengæld. Tværtimod kan vi endda tildele den rekursive funktions returværdi til en variabel og også returnere den variabel.
Udførelse af faktorisering
Lad os her tage vores standardproblemopgørelse, Factorization, til generering af vores rekursive funktion.
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);
)
)
Lad os se på trin for trin-processen.
- Først har vi oprettet vores egen parameteriserede funktion til at tage en inputværdi fra hovedfunktionen, som vi ønsker at beregne factorial for.
- Derefter lavede vi en if-betingelse for at kontrollere, om det givne tal er nul. Hvis tallet er nul, returnerer vi 1 som vores standardværdi.
- Ellers multiplicerer vi det nuværende antal med den funktion, der tager tallet minus 1 som dens parameter.
- Så denne multiplikation gentager sig, indtil vi kommer til nummer 0. Som standard har vi skrevet vores return output for nul som 1, ville det endelige resultat ganges med 1.
Produktion:
Nu i koden skal jeg udskifte vores funktionsparameter fra num minus 1 til, num. I dette tilfælde kalder funktionen sig igen og igen, og processen gentager sig.
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);
)
)
Produktion:
Gennem ovenstående output kan vi tydeligt se undtagelsen af stackoverløb, hvor funktionen gentagne gange kalder sig selv. Kun den fremhævede del ændres med hensyn til det første program.
På samme måde kan vi angive nummeret som en bruger-indlæst værdi 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);
)
)
Produktion:
Hvad hvis vi giver nul som input? Ja, en ville blive returneret.
Produktion:
Hvad nu, hvis vi giver et negativt tal?
Produktion:
Dette gav mig også en undtagelse fra Stack overflow, da vores faktorale rekursionsfunktion mindsker dens værdi af parameteren ved hver udførelse. Så de negative tal vil fortsætte med at blive reduceret til -6, -7, -8 og så videre. Det er grunden til, at vi går til denne undtagelse.
Kan du som en øvelse prøve at oprette en rekursiv funktion til negative tal?
Tip: Vi kan tage en forudsætning for tal mindre end nul og tilføje en til vores rekursive funktionsparameter, indtil nul kommer.
Eksempler på rekursiv funktion i C #
Der er få gode eksempler, der kan citeres med hensyn til de rekursive funktioner:
Vi har nogle få andre steder, hvor vi kan bruge disse rekursive funktioner.
- Udskriv numre fra et givet startpunkt og slutpunkt kontinuerligt. (Program nedenfor)
- Tilføj numre startende fra et givet startpunkt og stop ved slutpunktet, eller når en bestemt sum er nået.
- Udskriv numre, der er divideret med et bestemt antal i et bestemt område.
- Vi ønsker at udskrive et hvilket som helst af antallet af kontinuerlige linjer eller prikker efter at have skrevet en sætning og mange flere.
Som du kan observere rekursiv funktion ligner funktionaliteten i en løkke, men hvor vi kalder den samme funktion gentagne gange.
Lad os se, hvordan vi kan skrive en rekursiv funktion ved kontinuerligt at tilføje tal, indtil programmet finder det andet nummer, der er angivet 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;
)
)
Her, hvad vi gjorde, er:
- Vi har taget to numre num1 og num2 gennem brugerindgange
- Tilføj funktion, tilføjer numrene, der starter fra num1, indtil det får num2.
For eksempel, hvis jeg tager num1 = 5 og num2 = 8, så er den output-sum, vi får, 5 + 6 + 7 + 8, hvilket er 26.
Produktion:
Og hvad hvis jeg giver num1 mindre end num2?
Produktion:
Det giver nogle som num1-værdien som først, vi tildelte sumværdien til num1-værdi og returnerende sum, hvis if-sætningen ikke er relevant.
Kan du som en øvelse skrive en rekursiv funktion for at udskrive "Jeg kan godt lide kodning", indtil den følger en bestemt betingelse?
Tip: Vi kan følge den samme procedure for tilføjelse, der gøres i ovenstående program.
Konklusion
Så her har vi med succes fået udført rekursive funktioner, hvordan disse funktioner kaldes og et par eksempler på dem. Vi lærte også, hvordan en simpel forskel i opkaldet til en funktion kan få programmet til at løbe tør for det og skabe en undtagelse.
Anbefalede artikler
Dette er en guide til rekursiv funktion i C #. Her diskuterer vi udførelsen til generering af rekursiv funktion med dens eksempler. Du kan også gennemgå vores andre relaterede artikler for at lære mere-
- Anonyme funktioner i Matlab
- Tableau-strengfunktioner
- Hvad er funktionel testning?
- C # Funktioner
- Introduktion til rekursiv funktion i C ++
- Lær de 3 måder at læse Java-brugerinput