Uvod v rekurzivno delovanje v C #
V rekurzivni funkciji v C # pomeni rekurzija isti pomen kot v angleškem jeziku, natančno znan kot ponavljanje. Torej, rekurzivna narava funkcije označuje večkratno delo. In, da, če s programom ne ravnamo pravilno, bi zagotovo program izvajal v neprekinjeni zanki. Poskrbeti moramo, da bomo pri izvajanju teh rekurzivnih funkcij določili ustrezne pogoje, sicer bi funkcija vedno znova klicala, kar bi vodilo v nenehno izvajanje programa. Tukaj pojdimo naprej in poglejmo, kako lahko te funkcije ustvarimo v C #.
Sintaksa rekurzivnih funkcij v C #
Sintaksa tukaj je enaka sintaksi osnovne funkcije v C #. Poglejmo tukaj.
Tu ni posebne sintakse, vendar lahko opazimo, da se funkcija prikliče pri zagotavljanju rezultata. In moramo biti zelo previdni pri prenosu teh vrednosti parametrov v to rekurzivno funkcijo, saj očitno ne želimo, da se teče koda, ki se ne ustavi.
V zgornji sintaksi ni nič takega, funkcijo moramo poklicati samo v stavkih, ki se vračajo. Namesto tega lahko rekurzivni funkciji vrnemo vrednost spremenljivki in vrnemo tudi tej spremenljivki.
Izvajanje faktorizacije
Za ustvarjanje naše rekurzivne funkcije si vzemimo privzeto izjavo o težavi, faktorizacija.
Koda:
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);
)
)
Oglejmo si korak za korakom.
- Najprej smo ustvarili lastno parametrizirano funkcijo za odvzem vhodne vrednosti glavne funkcije, za katero želimo izračunati faktorije.
- Nato smo postavili pogoj if, da preverimo, ali je dano število nič. Če je število nič, potem vrnemo 1 kot privzeto vrednost.
- Drugače pomnožimo sedanje število s funkcijo, ki za svoj parameter vzame število minus 1.
- Torej, to množenje se ponavlja, dokler ne pridemo do številke 0. Ko smo privzeto zapisali povratni izhod za nič kot 1, bi bil končni rezultat pomnožen z 1.
Izhod:
Zdaj bom v kodi zamenjal naš funkcijski parameter s števila minus 1 na, num. V tem primeru bi se funkcija klicala vedno znova in postopek bi se ponavljal.
Koda:
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);
)
)
Izhod:
Skozi zgornji izhod jasno vidimo izjemo prelivanja skladov, kjer se funkcija večkrat sam prikliče. Glede na prvi program se spremeni samo označeni del.
Na enak način lahko številko naredimo kot vrednost, ki jo vnese uporabnik, kot je spodaj:
Koda:
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);
)
)
Izhod:
Kaj če kot vložek damo nič? Da, enega bi vrnili.
Izhod:
Zdaj pa kaj, če damo negativno številko?
Izhod:
To mi je omogočilo tudi izjemo preliva Stacka, saj naša faktorska rekurzijska funkcija pri vsaki izvedbi zmanjšuje vrednost parametra. Torej, negativne številke bi se zmanjšale na -6, -7, -8 in tako naprej. Zato gremo k tej izjemi.
Ali lahko kot vajo poskusite ustvariti rekurzivno funkcijo za negativna števila?
Namig: lahko predpostavko števila, ki je manjša od nič, in dodate enega v naš rekurzivni funkcijski parameter, dokler ne pride nič.
Primeri rekurzivne funkcije v C #
V zvezi s rekurzivnimi funkcijami je nekaj dobrih primerov:
Imamo še nekaj mest, kjer lahko uporabimo te rekurzivne funkcije.
- Nenehno tiskajte številke z dane začetne in končne točke. (Program spodaj)
- Dodajte številke, ki se začnejo z dano začetno točko in se ustavijo na končni točki ali ko dosežete določeno vsoto.
- Natisnite številke, ki jih delite s katero koli določeno številko v katerem koli določenem območju.
- Po pisanju stavka in mnogih drugih želimo izpisati katero koli številko neprekinjenih vrstic ali pik.
Kot lahko opazite, je rekurzivna funkcija podobna funkcionalnosti zanke, toda tam, kjer isto funkcijo večkrat kličemo.
Poglejmo, kako lahko zapišemo rekurzivno funkcijo pri nenehnem dodajanju števil, dokler program ne najde druge številke, ki je dana kot vnos.
Koda:
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;
)
)
Tukaj smo naredili:
- Skozi uporabniške vnose smo vzeli dve številki num1 in num2
- Funkcija Add, doda številke, ki se začnejo od num1, dokler ne dobi num2.
Na primer, če vzamem num1 = 5 in num2 = 8, potem dobimo izhodno vsoto 5 + 6 + 7 + 8, kar je 26.
Izhod:
In kaj, če dam num1 manj kot num2?
Izhod:
Nekatere poda kot vrednost num1 kot prvo, dodamo vrednost vsote vrednosti num1 in vrnemo vsoto, če stavek if ni uporaben.
Ali lahko kot vajo napišete rekurzivno funkcijo, da natisnete »Všeč mi je kodiranje«, dokler ne sledi določenemu pogoju?
Namig: Lahko sledimo istemu postopku dodajanja, ki je narejen v zgornjem programu.
Zaključek
Torej, tukaj smo uspešno dobili izvajanje rekurzivnih funkcij, kako se te funkcije imenujejo in nekaj primerov le-teh. Izvedeli smo tudi, kako lahko zaradi preproste razlike pri klicanju funkcije program izteče iz njegovih meja in ustvari izjemo.
Priporočeni članki
To je vodnik za rekurzivno funkcijo v C #. Tukaj obravnavamo izvedbo za ustvarjanje rekurzivne funkcije z njenimi primeri. Obiščite lahko tudi druge naše sorodne članke, če želite izvedeti več -
- Anonimne funkcije v Matlabu
- Funkcije vrvic Tableau
- Kaj je funkcionalno testiranje?
- C # funkcije
- Uvod v rekurzivno delovanje v C ++
- Naučite se 3 načinov branja Java User Input