Увод у рекурзивну функцију у Ц #
У рекурзивној функцији у Ц #, рекурзија означава исто значење као и на енглеском језику, тачно познато као понављање. Дакле, рекурзивна природа функције означава понављање истог посла. Да, ако се програмом не рукује правилно, програм би се сигурно покренуо у континуираној петљи. Морамо бити сигурни да смо одредили одговарајуће услове у извршавању ових рекурзивних функција, у супротном би функција сама себе позивала, изнова и изнова, што би довело до континуираног извршавања програма. Ево, идемо напријед и погледајмо како можемо створити ове функције у Ц #.
Синтакса рекурзивних функција у Ц #
Синтакса је овде иста као синтакса основне функције у Ц #. Погледајмо овде.
Овде нема посебне синтаксе, али можемо приметити да се функција позива у пружању резултата повратка. И морамо бити веома опрезни у преношењу тих параметара у ту рекурзивну функцију, јер очигледно не желимо да се покреће код који се не зауставља.
У горњој синтакси нема ништа слично, функцију морамо позивати само у повратним изјавама. Уместо тога, чак можемо доделити повратну вредност рекурзивне функције променљивој и вратити је истој.
Извођење факторизације
Овде узмимо своју задану изјаву проблема, Факторизовање, за генерисање наше рекурзивне функције.
Шифра:
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 као задану вриједност.
- Иначе, множимо садашњи број са функцијом која узима број минус 1 као свој параметар.
- Дакле, ово множење се понавља све док не стигнемо до броја 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 вриједности и враћали суму ако изјава иф није примјењива.
Као вежбу можете ли написати рекурзивну функцију за штампање „Свиђа ми се кодирање“ док не следи одређено стање?
Савет: Можемо следити исти поступак додавања који је учињен у горе наведеном програму.
Закључак
Дакле, овде смо успешно добили извршење рекурзивних функција, како се те функције називају и неколико примера њих. Такође смо научили како једноставна разлика у позивању функција може да програм истекне ван његових граница и створи изузетак.
Препоручени чланци
Ово је водич за рекурзивну функцију у Ц #. Овде ћемо расправити извршење за генерисање рекурзивне функције са својим примерима. Можете и да прођете кроз наше друге сродне чланке да бисте сазнали више -
- Анонимне функције у Матлабу
- Функције стрингова таблеау
- Шта је функционално тестирање?
- Ц # функције
- Увод у рекурзивну функцију у Ц ++
- Научите 3 начина за читање Јава корисничког уноса