Введение в рекурсивную функцию в C #
В Рекурсивной функции в C #, Рекурсия означает то же значение, что и в английском языке, точно известное как повторение. Таким образом, рекурсивный характер функции означает выполнение одной и той же работы многократно. И, да, если программа не обрабатывается правильно, она определенно будет запускать программу в непрерывном цикле. Мы должны убедиться, что мы задаем надлежащие условия при выполнении этих рекурсивных функций, иначе функция будет вызывать себя снова и снова, что приведет к непрерывному выполнению программы. Здесь давайте продолжим и посмотрим, как мы можем создать эти функции в C #.
Синтаксис рекурсивных функций в C #
Синтаксис здесь такой же, как и синтаксис базовой функции в C #. Давайте посмотрим здесь.
Здесь нет специального синтаксиса, но мы можем заметить, что функция вызывает себя, предоставляя возвращаемый результат. И мы должны быть очень осторожны при передаче этих значений параметров в эту рекурсивную функцию, поскольку очевидно, что нам не нужен работающий код, который не останавливается.
В приведенном выше синтаксисе нет ничего похожего, мы должны вызывать функцию только в операторах возврата. Скорее, мы можем даже присвоить значение, возвращаемое рекурсивной функцией, переменной и вернуть эту переменную тоже.
Выполнение Факторизации
Здесь давайте возьмем нашу стандартную постановку задачи Factorization для генерации нашей рекурсивной функции.
Код:
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 через пользовательский ввод
- Добавить функцию, добавляет числа, начиная с num1, до получения num2.
Например, если я возьму num1 = 5 и num2 = 8, то полученная сумма будет равна 5 + 6 + 7 + 8, что равно 26.
Выход:
А что если я дам num1 меньше, чем num2?
Выход:
Сначала в качестве значения num1 он получает некоторое значение, мы присваиваем значение суммы значению num1 и возвращаемую сумму, если оператор if неприменим.
В качестве упражнения вы можете написать рекурсивную функцию для печати «Мне нравится кодировать», пока она не будет соответствовать определенному условию?
Подсказка: мы можем следовать той же процедуре добавления, которая выполняется в вышеуказанной программе.
Вывод
Итак, здесь мы успешно получили выполнение рекурсивных функций, как эти функции вызываются и несколько примеров из них. Мы также узнали, как простая разница в вызове функции может заставить программу выйти за ее пределы и создать исключение.
Рекомендуемые статьи
Это руководство по рекурсивной функции в C #. Здесь мы обсудим выполнение для генерации рекурсивной функции с ее примерами. Вы также можете просмотреть другие наши статьи, чтобы узнать больше-
- Анонимные функции в Matlab
- Табличные функции Строки
- Что такое функциональное тестирование?
- Функции C #
- Введение в рекурсивную функцию в C ++
- Изучите 3 способа чтения пользовательского ввода Java