Рекурсия функции в C#
В программировании есть такое понятие, как рекурсия - это когда функция вызывает сама себя. Чтобы цепочка вызовов когда-нибудь закончилась, нужен базовый случай: в нем новый вызов уже не делается.
Без базового случая получится бесконечная цепочка вызовов. Поэтому в рекурсивной функции сначала проверяют простое условие остановки, и только иначе вызывают себя с более простым аргументом.
Выведем с помощью рекурсии числа от 1 до 10.
Базовый случай - когда текущее число больше 10:
void PrintRange(int num)
{
if (num > 10)
{
return;
}
Console.WriteLine(num);
PrintRange(num + 1);
}
PrintRange(1);
Каждый вызов печатает свое число и передает в следующий вызов
значение на 1 больше. Когда num станет 11,
срабатывает базовый случай и цепочка останавливается.
Запишем функцию Fact для факториала небольших
натуральных чисел. Для 0 и 1 сразу вернем
1, иначе умножим num на факториал num - 1:
int Fact(int num)
{
if (num <= 1)
{
return 1;
}
return num * Fact(num - 1);
}
Console.WriteLine(Fact(5));
Так же можно сложить числа от 1 до n.
Базовый случай - 0, тогда сумма пустая.
Иначе к num прибавляют сумму до num - 1:
int SumTo(int num)
{
if (num <= 0)
{
return 0;
}
return num + SumTo(num - 1);
}
Console.WriteLine(SumTo(5));
С помощью рекурсии выведите числа от 1
до 5 в консоль, по одному на строку.
С помощью рекурсии найдите сумму чисел
от 1 до 10 и выведите ее.