Step 7 (S-2682)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/538/step/7

С++ позволяет определять рекурсивные функции, т.е. функции которые вызывают сами себя напрямую или опосредованно. Например, следующая функция вычисляет факториал:


int factorial(int n) {    if (n == 0)        return 1;    return factorial(n - 1) * n;}

 

Рекурсия может быть и более сложной, например, следующая функция вычисляет число Фибоначчи с заданным номером:


int fibonacсi(int n) {    if (n < 2)        return n;    return fibonacci(n - 1) + fibonacci(n - 2);}


Т.е. рекурсивные вызовы могут образовывать дерево, узлами которого являются вызовы функции с конкретными параметрами.

Очень многие вещи очень естественно выражаются при помощи рекурсивных функций, поэтому рекурсия является полезной техникой. Однако язык C++ не рассчитан для написания программ активно использующих рекурсию (в отличие от, например, некоторых функциональных языков программирования), поэтому важно следить, чтобы глубина рекурсии не была очень большой.