Вступ до рекурсивної функції в 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 через введення користувачів
- Функція Add, додає числа, починаючи з num1, поки не отримає num2.
Наприклад, якщо я беру num1 = 5 і num2 = 8, то отримана сума виходу 5 + 6 + 7 + 8, що становить 26.
Вихід:
А що якщо, я даю num1 менше, ніж num2?
Вихід:
Це дає деяке як значення num1, спочатку ми присвоїли значення суми значенням num1 і повернемо суму, якщо оператор if не застосовується.
Як вправу ви можете написати рекурсивну функцію, щоб надрукувати "Мені подобається кодування", поки вона не відповідає певній умові?
Підказка: Ми можемо слідувати тій самій процедурі додавання, яка робиться у вищевказаній програмі.
Висновок
Отже, тут ми успішно отримали виконання рекурсивних функцій, як називаються ці функції та кілька прикладів їх. Ми також дізналися, як проста різниця у виклику функції може змусити програму вийти з її меж і створити виняток.
Рекомендовані статті
Це посібник з рекурсивної функції в C #. Тут ми обговорюємо виконання для генерації рекурсивної функції з її прикладами. Ви також можете ознайомитись з іншими пов'язаними з нами статтями, щоб дізнатися більше -
- Анонімні функції в Matlab
- Функції рядка Tableau
- Що таке функціональне тестування?
- C # Функції
- Вступ до рекурсивної функції в C ++
- Вивчіть 3 способи читання Java User Input