Funcție recursivă în C # - Sintaxa și executarea funcției recursive în C #

Cuprins:

Anonim

Introducere în funcția recursivă în C #

În funcția Recursivă în C #, Recursion înseamnă a denota același sens ca și în limba engleză, cunoscut cu exactitate ca repetare. Deci, natura recursivă a unei funcții denotă efectuarea în mod repetat a aceleiași lucrări. Și, da, dacă programul nu este gestionat corect, cu siguranță ar rula programul într-o buclă continuă. Trebuie să ne asigurăm că specificăm condițiile corespunzătoare în executarea acestor funcții recursive, altfel funcția s-ar numi din nou și din nou, ceea ce duce la o execuție continuă a programului. Aici să mergem mai departe și să analizăm cum putem crea aceste funcții în C #.

Sintaxa funcțiilor recursive în C #

Sintaxa de aici este aceeași cu sintaxa funcției de bază în C #. Să aruncăm o privire aici.

Nu există o sintaxă specială aici, dar putem observa că o funcție se numește ea însăși în furnizarea rezultatului returnării. Și trebuie să fim foarte atenți la trecerea acestor valori ale parametrilor în acea funcție recursivă, deoarece, evident, nu dorim un cod de rulare care nu se oprește.

În sintaxa de mai sus, nu există nimic de genul, trebuie să apelăm funcția doar în instrucțiuni return. Mai degrabă, putem chiar să atribuim valoarea de retur a funcției recursive unei variabile și să redăm și acea variabilă.

Executarea factorilor

Aici să luăm declarația noastră de problemă implicită, Factorizare, pentru generarea funcției noastre recursive.

Cod:

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

Să aruncăm o privire asupra procesului pas cu pas.

  1. În primul rând, ne-am creat propria funcție parametrizată pentru a lua o valoare de intrare din funcția principală, pentru care dorim să calculăm factorialul.
  2. Apoi, am făcut o condiție if pentru a verifica dacă numărul dat este zero. Dacă numărul este zero, revenim 1 ca valoare implicită a noastră.
  3. Altfel, înmulțim numărul prezent cu funcția luând numărul minus 1 ca parametru.
  4. Deci, această înmulțire se repetă până ajungem la numărul 0. Ca implicit, ne-am scris ieșirea de retur pentru zero ca 1, rezultatul final va fi înmulțit cu 1.

ieşire:

Acum, în cod, am să înlocuiesc parametrul funcției noastre de la num minus 1 la num. În acest caz, funcția se va numi din nou și din nou, iar procesul se va repeta.

Cod:

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

ieşire:

Prin ieșirea de mai sus, putem vedea în mod clar excepția de revarsare a stivei, unde funcția se numește în mod repetat. Doar partea evidențiată este modificată în ceea ce privește primul program.

În același mod, putem face numărul ca valoare introdusă de utilizator ca mai jos:

Cod:

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

ieşire:

Ce se întâmplă dacă dăm zero ca intrare? Da, unul ar fi returnat.

ieşire:

Acum, ce se întâmplă dacă dăm un număr negativ?

ieşire:

Aceasta mi-a dat și o excepție de overflow Stack, întrucât funcția noastră de recursiv factorial scade valoarea parametrului pentru fiecare execuție. Deci, numerele negative ar continua să fie reduse la -6, -7, -8 și așa mai departe. Acesta este motivul pentru care mergem la această excepție.

Ca exercițiu, puteți încerca să creați o funcție recursivă pentru numere negative?

Sugestie: Putem lua o condiție prealabilă a numărului mai mică de zero și adăugăm una la parametrul nostru funcțional recursiv până când vine zero.

Exemple de funcții recursive în C #

Există câteva exemple bune care pot fi citate în ceea ce privește funcțiile recursive:

Avem câteva alte locuri în care putem folosi aceste funcții recursive.

  • Tipăriți numerele dintr-un punct de pornire și un punct final. (Programul de mai jos)
  • Adăugați numerele care pornesc de la un anumit punct de pornire și opriți-vă la punctul final sau când o anumită sumă este atinsă.
  • Tipăriți numere care sunt împărțite la orice număr particular într-un anumit interval.
  • Vrem să tipărim oricare dintre numerele de linii continue sau puncte după scrierea unei propoziții și multe altele.

După cum puteți observa funcția recursivă este similară cu funcționalitatea unei bucle, dar unde apelăm la aceeași funcție în mod repetat.

Să vedem cum putem scrie o funcție recursivă în adăugarea numerelor continuu până când programul va găsi al doilea număr care este dat ca intrare.

Cod:

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

Aici, ceea ce am făcut este:

  • Am luat două numere num1 și num2 prin intrări ale utilizatorului
  • Adaugă funcție, adaugă numerele începând de la num1 până devine num2.

De exemplu, dacă iau num1 = 5 și num2 = 8, atunci suma pe care o obținem este 5 + 6 + 7 + 8, care este 26.

ieşire:

Și ce dacă, dau num1 mai puțin decât num2?

ieşire:

Dă unii ca valoare num1 ca mai întâi, am atribuit valoarea sumei la valoarea num1 și suma de retur dacă instrucțiunea if nu este aplicabilă.

Ca exercițiu puteți scrie o funcție recursivă pentru a imprima „Îmi place codarea” până când urmează o anumită condiție?

Sugestie: Putem urma aceeași procedură de adăugare care se face în programul de mai sus.

Concluzie

Așadar, aici am obținut cu succes execuția funcțiilor recursive, cum sunt numite aceste funcții și câteva exemple ale acestora. De asemenea, am aflat cum o simplă diferență în apelarea unei funcții poate face ca programul să-și excludă limitele și să creeze o excepție.

Articole recomandate

Acesta este un ghid pentru funcția recurentă în C #. Aici discutăm execuția pentru generarea funcției recursive cu exemplele sale. Puteți, de asemenea, să parcurgeți alte articole conexe pentru a afla mai multe-

  1. Funcții anonime în Matlab
  2. Funcțiile șirurilor din tabel
  3. Ce este testarea funcțională?
  4. C # Funcții
  5. Introducere în funcția recursivă în C ++
  6. Aflați cele 3 modalități de a citi introducerea utilizatorului Java