Что такое рекурсия?
Рекурсия — это процесс, в котором функция прямо или косвенно вызывает саму себя, а соответствующая функция вызывается как рекурсивная функция. Используя рекурсивный алгоритм, некоторые проблемы могут быть решены довольно легко.
Что происходит в стеке при выполнении рекурсивной функции?
Чтобы объяснить это, мы рассмотрим в качестве примера следующую рекурсивную функцию, написанную на C:
float _pow_recursion(float x, float y)
{
if (y == 0)
return (1);
if (y < 0)
return (_pow_recursion(x, y + 1) / x);
return (_pow_recursion(x, y - 1) * x);
}
Наконец, мы увидим, что происходит в стеке. Для этого я разработал следующий поясняющий рисунок, и мы начнем с зеленого флажка в нижней части изображения:
Пройдя весь путь, функция, наконец, возвращает степень, заданную двумя целыми числами.
Этот блог был написан Yuri Quezada
Я надеюсь, что эта статья поможет некоторым из вас графически понять, что происходит в стеке, когда мы рекурсивно вызываем функцию.