В этом руководстве вы научитесь писать рекурсивные функции в программировании на 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()
.
Преимущества и недостатки рекурсии
Рекурсия делает программу элегантной. Однако, если производительность жизненно важна, используйте вместо них циклы, поскольку рекурсия обычно намного медленнее.
При этом рекурсия - важная концепция. Он часто используется в структуре данных и алгоритмах. Например, рекурсия часто используется в таких задачах, как обход дерева.