Rekurzivna funkcija u C # - Sintaksa i izvršavanje rekurzivne funkcije u C #

Sadržaj:

Anonim

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.

  1. Prvo smo stvorili vlastitu parametriziranu funkciju da uzmemo ulaznu vrijednost iz glavne funkcije, za koju želimo izračunati faktorije.
  2. Zatim smo postavili if uvjet da provjerimo da li je navedeni broj nula. Ako je broj nula, vraćamo 1 kao zadanu vrijednost.
  3. Inače, množimo sadašnji broj s funkcijom koja uzima broj minus 1 kao svoj parametar.
  4. 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 -

  1. Anonimne funkcije u Matlabu
  2. Funkcije stringova tableau
  3. Što je funkcionalno ispitivanje?
  4. C # funkcije
  5. Uvod u rekurzivne funkcije u C ++
  6. Naučite 3 načina za čitanje Java korisničkog unosa