C Recursion (Рекурсивная функция)

Содержание

В этом руководстве вы научитесь писать рекурсивные функции в программировании на C с помощью примера.

Функция, которая вызывает сама себя, называется рекурсивной функцией. И этот метод известен как рекурсия.

Как работает рекурсия?

 void recurse () (… recurse ();…) int main () (… recurse ();…)

Рекурсия продолжается до тех пор, пока не будет выполнено какое-либо условие, предотвращающее ее.

Чтобы предотвратить бесконечную рекурсию, можно использовать оператор if… else (или аналогичный подход), когда одна ветвь выполняет рекурсивный вызов, а другая - нет.

Пример: сумма натуральных чисел с использованием рекурсии

 #include int sum(int n); int main() ( int number, result; printf("Enter a positive integer: "); scanf("%d", &number); result = sum(number); printf("sum = %d", result); return 0; ) int sum(int n) ( if (n != 0) // sum() function calls itself return n + sum(n-1); else return n; ) 

Вывод

 Введите положительное целое число: 3 сумма = 6

Первоначально sum()вызывается из main()функции с числом, переданным в качестве аргумента.

Предположим, что значение n внутри sum()изначально равно 3. Во время следующего вызова функции 2 передается в sum()функцию. Этот процесс продолжается до тех пор, пока n не станет равным 0.

Когда n равно 0, ifусловие не выполняется, и elseчасть выполняется, возвращая в конечном итоге сумму целых чисел main().

Преимущества и недостатки рекурсии

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

При этом рекурсия - важная концепция. Он часто используется в структуре данных и алгоритмах. Например, рекурсия часто используется в таких задачах, как обход дерева.

Интересные статьи...