Рекурсивные функции. Рекурсивной называется функция, которая получает результат, вызывая сама себя

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

1) должны передавать различные аргументы;

2) должны достичь предела или условия, при котором функция прекращает вызывать себя.

Эти два простых правила предотвращают рекурсивную функцию от зацикливания. При этом рекурсия – это такая форма повторения, которая не использует формально какой-либо цикл.

Пример рекурсивной функции для вычисления факториала:

long int Fact(int X)

{

if(X == 1)

return 1; // окончание рекурсии

else

return X * Fact(X – 1); // рекурсивный вызов

}

//---------------------------------

void main()

{

int k = 3;

int F = Fact(k);

printf("\n Факториал %d равен %d", k, F);

getch();

}

Наглядно работу рекурсивной функции поясняет следующий рисунок:

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

5.7 Новые особенности функций в C++

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: