Въведение в рекурсивната функция в C #
В рекурсивна функция в C #, рекурсия означава да означава същото значение като в английския език, точно известно като повторение. И така, рекурсивният характер на функцията обозначава извършването на същата работа многократно. И, да, ако програмата не се работи правилно, тя определено ще стартира програмата в непрекъснат цикъл. Трябва да сме сигурни, че посочваме подходящи условия при изпълнение на тези рекурсивни функции, в противен случай функцията ще се извиква отново и отново, което води до непрекъснато изпълнение на програмата. Тук нека продължим напред и да разгледаме как можем да създадем тези функции в C #.
Синтаксис на рекурсивни функции в C #
Синтаксисът тук е същият като синтаксиса на основната функция в C #. Нека да разгледаме тук.
Тук няма специален синтаксис, но можем да наблюдаваме, че една функция се обажда в осигуряването на резултата за връщане. И ние трябва да бъдем много внимателни при предаването на тези стойности на параметъра в тази рекурсивна функция, тъй като очевидно не искаме работещ код, който не спира.
В горния синтаксис няма нищо подобно, трябва да извикаме функцията само в оператори за връщане. По-скоро можем дори да присвоим рекурсивната функция на връщащата се стойност на променлива и да върнем и тази променлива.
Изпълнение на факторизацията
Тук нека вземем нашата декларация за проблем по подразбиране, Факторизация, за генериране на рекурсивна функция.
Код:
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);
)
)
Нека да разгледаме стъпка по стъпка процеса.
- Първо, ние създадохме собствена параметризирана функция, за да вземем входна стойност от основната функция, за която искаме да изчислим фактория.
- След това направихме условие if, за да проверим дали даденото число е нула. Ако числото е нула, ние връщаме 1 като стойност по подразбиране.
- Иначе, умножаваме настоящото число с функцията, като числото е като числото минус 1.
- И така, това умножение се повтаря, докато стигнем до число 0. Тъй като по подразбиране сме записали възвръщаемостта си за нула като 1, крайният резултат ще бъде умножен по 1.
изход:
Сега в кода ще заменям функционалния ни параметър от num минус 1 до, num. В този случай функцията ще се обажда отново и отново и процесът ще се повтаря.
Код:
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 и така нататък. Това е причината да стигнем до това изключение.
Като упражнение можете ли да опитате да създадете рекурсивна функция за отрицателни числа?
Съвет: Можем да приемем предварително условие за число по-малко от нула и да добавим такова към параметъра на рекурсивната ни функция, докато не дойде нулата.
Примери за рекурсивна функция в C #
Има няколко добри примера, които могат да бъдат цитирани по отношение на рекурсивните функции:
Имаме още няколко места, където можем да използваме тези рекурсивни функции.
- Печатайте номера от дадена начална точка и крайна точка непрекъснато. (Програма по-долу)
- Добавете числа, започвайки от дадена начална точка и спрете в крайната точка или когато се достигне определена сума.
- Печат на номера, които са разделени на всеки конкретен номер във всеки определен диапазон.
- Искаме да отпечатаме всяко от числата на непрекъснати редове или точки след писане на изречение и много други.
Както можете да наблюдавате, рекурсивна функция е подобна на функционалността на цикъл, но където ние извикваме същата функция многократно.
Нека видим как можем да запишем рекурсивна функция при добавяне на числа непрекъснато, докато програмата не намери второто число, което се дава като вход.
Код:
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;
)
)
Ето, това, което направихме е:
- Взехме две числа num1 и num2 чрез потребителски въвеждания
- Функция Добавяне, добавя числата, започващи от число1 до получаване на числото2.
Например, ако вземем num1 = 5 и num2 = 8, тогава получената сума на изхода е 5 + 6 + 7 + 8, което е 26.
изход:
А какво ще стане, ако дам num1 по-малко от num2?
изход:
Той дава някои като стойността num1 като първо, ние присвоихме сумата на num1 стойност и връщането на сумата, ако операторът if не е приложим.
Като упражнение можете ли да напишете рекурсивна функция, за да отпечатате „Харесвам кодиране“, докато не следва определено условие?
Съвет: Можем да следваме същата процедура за добавяне, която се прави в горната програма.
заключение
И така, тук успешно имаме изпълнение на рекурсивни функции, как се наричат тези функции и няколко примера за тях. Научихме също как една проста разлика в извикването на функция може да накара програмата да изтече от границите си и да създаде изключение.
Препоръчителни статии
Това е ръководство за рекурсивна функция в C #. Тук обсъждаме изпълнението за генериране на рекурсивна функция с нейните примери. Можете също да разгледате и другите ни свързани статии, за да научите повече-
- Анонимни функции в Matlab
- Функции на низовете на Tableau
- Какво е функционално тестване?
- C # функции
- Въведение в рекурсивната функция в C ++
- Научете 3-те начина за четене на потребителски вход на Java