Uvod u rekurzivno funkciju u C #
U rekurzivnoj funkciji u C #, rekurzija označava isto značenje kao u engleskom jeziku, tačno poznato kao ponavljanje. Dakle, rekurzivna priroda funkcije označava ponavljanje istog posla. Da, ako se programom ne rukuje ispravno, on bi definitivno pokrenuo program u kontinuiranoj petlji. Moramo biti sigurni da smo odredili odgovarajuće uvjete u izvršavanju tih rekurzivnih funkcija, u suprotnom bi se funkcija ponovno i ponovno pozivala, što bi dovelo do kontinuiranog izvršavanja programa. Evo idemo naprijed i pogledajmo kako možemo stvoriti ove funkcije u C #.
Sintaksa rekurzivnih funkcija u C #
Sintaksa je ovdje ista kao sintaksa osnovne funkcije u C #. Pogledajmo ovdje.
Ovdje nema posebne sintakse, ali možemo primijetiti da se funkcija poziva u pružanju rezultata povratka. I moramo biti vrlo oprezni u prosljeđivanju tih parametara u tu rekurzivnu funkciju jer očito ne želimo pokrenuti kod koji se ne zaustavlja.
U gornjoj sintaksi nema ništa slično, funkciju moramo pozvati samo u povratnim izjavama. Umjesto toga, čak možemo dodijeliti povratnu vrijednost rekurzivne funkcije varijabli i vratiti je istoj.
Izvođenje faktorizacije
Evo, uzmimo svoju zadanu tvrdnju o problemu, Faktorizovanje, za generiranje naše rekurzivne funkcije.
Kodirati:
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);
)
)
Pogledajmo postupak po korak.
- Prvo smo stvorili vlastitu parametriziranu funkciju da uzmemo ulaznu vrijednost iz glavne funkcije, za koju želimo izračunati faktorije.
- Zatim smo postavili if uvjet da provjerimo da li je navedeni broj nula. Ako je broj nula, vraćamo 1 kao zadanu vrijednost.
- Inače, množimo sadašnji broj s funkcijom koja uzima broj minus 1 kao svoj parametar.
- Dakle, ovo množenje se ponavlja sve dok ne stignemo do broja 0. Kao što smo prema zadanom zapisali povratni izlaz za nulu kao 1, konačni rezultat pomnožio bi se s 1.
Izlaz:
Sada, u kodu, zamijenit ću naš parametar funkcije iz broja minus 1 u, num. U ovom slučaju, funkcija će se pozivati uvijek iznova i proces bi se ponavljao.
Kodirati:
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);
)
)
Izlaz:
Kroz gornji izlaz jasno možemo vidjeti iznimku prepunjenosti snopa, gdje se funkcija opetovano poziva. Samo se istaknuti dio mijenja u odnosu na prvi program.
Na isti način možemo napraviti broj kao unesenu vrijednost korisnika, kao što je niže:
Kodirati:
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);
)
)
Izlaz:
Što ako dajemo nulu kao ulaz? Da, jedan bi bio vraćen.
Izlaz:
Što ako dodijelimo negativan broj?
Izlaz:
Ovo mi je dalo i iznimku preljeva Stacka jer naša faktografska rekurzija smanjuje vrijednost parametra pri svakoj izvedbi. Dakle, negativni brojevi bi se smanjili na -6, -7, -8 i tako dalje. To je razlog zbog kojeg idemo na ovu iznimku.
Možete li pokušati stvoriti rekurzivnu funkciju za negativne brojeve kao vježbu?
Savjet: Preduvjet broja manji od nule možemo dodati i dodati našem parametru rekurzivne funkcije dok ne dođe nula.
Primjeri rekurzivne funkcije u C #
Nekoliko je dobrih primjera koji se mogu navesti s obzirom na rekurzivne funkcije:
Imamo još nekoliko mjesta na kojima možemo koristiti te rekurzivne funkcije.
- Ispisujte brojeve s određene početne točke i krajnje točke kontinuirano. (Program u nastavku)
- Dodajte brojeve počevši od određene početne točke i zaustavite se na krajnjoj točki ili kad se dosegne određeni zbroj.
- Ispisati brojeve koji su podijeljeni bilo kojim brojem u određenom rasponu.
- Želimo ispisati bilo koji od brojeva kontinuiranih linija ili točkica nakon pisanja rečenice i mnogih drugih.
Kao što možete primijetiti, rekurzivna funkcija slična je funkcionalnosti petlje, ali tamo gdje istu funkciju ponavljamo više puta.
Pogledajmo kako možemo stalno pisati rekurzivnu funkciju u dodavanju brojeva dok program ne pronađe drugi broj koji se daje kao ulaz.
Kodirati:
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;
)
)
Evo što smo učinili je:
- Dva korisnička unosa uzeli smo dva broja num1 i num2
- Funkcija dodavanja, dodaje brojeve počevši od broja1 do dobivanja broja2.
Na primjer, ako uzmem num1 = 5 i num2 = 8, tada dobiveni iznos je 5 + 6 + 7 + 8, što je 26.
Izlaz:
A što ako, dajem num1 manje od num2?
Izlaz:
Daje neke kao vrijednost num1 kao prvo, dodijelili smo vrijednost zbroja num1 vrijednosti i povratnu sumu ako izjava if nije primjenjiva.
Kao vježbu možete li napisati rekurzivnu funkciju za ispis "Volim kodiranje" dok ne slijedi određeno stanje?
Savjet: Možemo slijediti isti postupak dodavanja koji je učinjen u gore navedenom programu.
Zaključak
Dakle, ovdje smo uspješno dobili izvršenje rekurzivnih funkcija, kako se te funkcije nazivaju i nekoliko primjera istih. Također smo naučili kako jednostavna razlika u pozivanju funkcije može program pokrenuti izvan njegovih granica i stvoriti iznimku.
Preporučeni članci
Ovo je vodič za rekurzivnu funkciju u C #. Ovdje ćemo raspraviti izvršenje za generiranje rekurzivne funkcije s njezinim primjerima. Možete i proći kroz naše druge povezane članke da biste saznali više -
- Anonimne funkcije u Matlabu
- Funkcije stringova tableau
- Što je funkcionalno ispitivanje?
- C # funkcije
- Uvod u rekurzivne funkcije u C ++
- Naučite 3 načina za čitanje Java korisničkog unosa