Рекурзивна функција у Ц # - Синтакса и извршавање рекурзивне функције у Ц #

Преглед садржаја:

Anonim

Увод у рекурзивну функцију у Ц #

У рекурзивној функцији у Ц #, рекурзија означава исто значење као и на енглеском језику, тачно познато као понављање. Дакле, рекурзивна природа функције означава понављање истог посла. Да, ако се програмом не рукује правилно, програм би се сигурно покренуо у континуираној петљи. Морамо бити сигурни да смо одредили одговарајуће услове у извршавању ових рекурзивних функција, у супротном би функција сама себе позивала, изнова и изнова, што би довело до континуираног извршавања програма. Ево, идемо напријед и погледајмо како можемо створити ове функције у Ц #.

Синтакса рекурзивних функција у Ц #

Синтакса је овде иста као синтакса основне функције у Ц #. Погледајмо овде.

Овде нема посебне синтаксе, али можемо приметити да се функција позива у пружању резултата повратка. И морамо бити веома опрезни у преношењу тих параметара у ту рекурзивну функцију, јер очигледно не желимо да се покреће код који се не зауставља.

У горњој синтакси нема ништа слично, функцију морамо позивати само у повратним изјавама. Уместо тога, чак можемо доделити повратну вредност рекурзивне функције променљивој и вратити је истој.

Извођење факторизације

Овде узмимо своју задану изјаву проблема, Факторизовање, за генерисање наше рекурзивне функције.

Шифра:

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

Погледајмо корак по корак.

  1. Прво смо направили сопствену параметризовану функцију да узмемо улазну вредност од главне функције, за коју желимо да израчунамо факторски фактор.
  2. Затим смо поставили услов иф да бисмо проверили да ли је дати број нула. Ако је број нула, враћамо 1 као задану вриједност.
  3. Иначе, множимо садашњи број са функцијом која узима број минус 1 као свој параметар.
  4. Дакле, ово множење се понавља све док не стигнемо до броја 0. Као што смо подразумевано написали повратни излаз за нулу као 1, коначни резултат би се помножио са 1.

Излаз:

Сада ћу у коду заменити наш функцијски параметар са броја минус 1 до, нум. У овом случају, функција би се позивала изнова и изнова, а процес би се понављао.

Шифра:

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

Излаз:

Кроз горњи излаз јасно се може видети изузетак препуњености снопа, при чему се функција опетовано позива. Само означени део се мења у односу на први програм.

На исти начин можемо направити број као унесену вредност корисника, као ниже:

Шифра:

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

Излаз:

Шта ако дајемо нулу као улаз? Да, један би био враћен.

Излаз:

Шта ако доделимо негативан број?

Излаз:

Ово ми је омогућило и изузетак прелива Стака, јер наша фактографска рекурзија смањује вредност параметра при свакој изведби. Дакле, негативни бројеви би се смањили на -6, -7, -8 и тако даље. То је разлог због којег идемо на овај изузетак.

Да ли можете да покушате да створите рекурзивну функцију за негативне бројеве?

Савет: Можемо узети предуслов броја мањег од нуле и додати га нашем параметру рекурзивне функције док не дође нула.

Примери рекурзивне функције у Ц #

Постоји неколико добрих примера који се могу цитирати у вези са рекурзивним функцијама:

Имамо још неколико места где можемо да користимо ове рекурзивне функције.

  • Исписујте бројеве са одређене почетне и крајње тачке непрекидно. (Програм испод)
  • Додајте бројеве почевши од дате почетне тачке и зауставите се на крајњој тачки или када се достигне одређена сума.
  • Бројеви за штампање који су подељени са било којим одређеним бројем у одређеном распону.
  • Желимо да испишемо било који од бројева непрекидних линија или тачака након што смо написали реченицу и још много тога.

Као што можете приметити, рекурзивна функција је слична функционалности петље, али тамо где исту функцију понављамо више пута.

Да видимо како можемо стално писати рекурзивну функцију у додавању бројева све док програм не пронађе други број који се даје као улаз.

Шифра:

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

Ево, оно што смо урадили је:

  • Преко два корисничка уноса узели смо два броја нум1 и нум2
  • Додати функцију, додаје бројеве почевши од броја1 до добијања броја2.

На пример, ако узмем нум1 = 5 и нум2 = 8, тада добивени износ је 5 + 6 + 7 + 8, што је 26.

Излаз:

А шта ако, дајем нум1 мање од нум2?

Излаз:

Неким даје вриједност нум1 као прво, додијелили смо вриједност зброју нум1 вриједности и враћали суму ако изјава иф није примјењива.

Као вежбу можете ли написати рекурзивну функцију за штампање „Свиђа ми се кодирање“ док не следи одређено стање?

Савет: Можемо следити исти поступак додавања који је учињен у горе наведеном програму.

Закључак

Дакле, овде смо успешно добили извршење рекурзивних функција, како се те функције називају и неколико примера њих. Такође смо научили како једноставна разлика у позивању функција може да програм истекне ван његових граница и створи изузетак.

Препоручени чланци

Ово је водич за рекурзивну функцију у Ц #. Овде ћемо расправити извршење за генерисање рекурзивне функције са својим примерима. Можете и да прођете кроз наше друге сродне чланке да бисте сазнали више -

  1. Анонимне функције у Матлабу
  2. Функције стрингова таблеау
  3. Шта је функционално тестирање?
  4. Ц # функције
  5. Увод у рекурзивну функцију у Ц ++
  6. Научите 3 начина за читање Јава корисничког уноса