Что такое рекурсия?

Рекурсия — это процесс, в котором функция прямо или косвенно вызывает саму себя, а соответствующая функция вызывается как рекурсивная функция. Используя рекурсивный алгоритм, некоторые проблемы могут быть решены довольно легко.

Что происходит в стеке при выполнении рекурсивной функции?

Чтобы объяснить это, мы рассмотрим в качестве примера следующую рекурсивную функцию, написанную на 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

Я надеюсь, что эта статья поможет некоторым из вас графически понять, что происходит в стеке, когда мы рекурсивно вызываем функцию.