Рекурсия
Привет ребят, сегодня мы с вами поговорим об очень важном моменте в программировании - рекурсии.
Рекурсивная функция, представляет собой функцию, которая вызывает саму себя.
Вот пример такой функции( подсчет факториала ):
static int Factorial(int x)
{
if (x == 0 || x == 1)
{
return 1;
}
else
{
return x * Factorial(x - 1);
}
}И так, давайте разберемся что здесь происходит.
- Первое условие это "Базовый случай". В данном примере если число равно 0 или 1, нам не нужно его высчитывать, а можно сразу вывести ответ
- А вот второе, это именно рекурсивный случай. То есть если число больше 1, нам нужно данное нам число умножить на ту же функцию, только передать в нее число на единицу меньше.
Стек вызовов
Теперь хочу поднять тему максимально тесно связанную с рекурсией, а именно стек вызовов.
Вернемся к примеру выше, при подсчете факториала 5 нам понадобится вызвать функцию 5 раз. И пока не закончится последний вызов( который на как раз токи выдаст нам 120 ), первый будет храниться в активной памяти программы.
То есть когда вы рекурсивно вызываете функцию, то функция "вызыватель" приостанавливается в частично завершенном состоянии. А вместе с ней и переменные от этих функций
Ну на сегодня это все, постарался разобрать и более менее понятно объяснить эту тему
Удачи, программисты!