Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Рекурсия в C: основы, примеры и условия выхода

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

void recursion() {
    recursion();  // бесконечный вызов себя
}
int main() {
    recursion();
}

Факториал числа

Классический пример рекурсии — вычисление факториала:

#include <stdio.h>

unsigned long long factorial(unsigned int n) {
    if (n <= 1) return 1;          // базовый случай
    return n * factorial(n - 1);   // рекурсивный шаг
}

int main() {
    int i = 12;
    printf("Factorial of %d is %llu\n", i, factorial(i));
    return 0;
}

Результат:

Factorial of 12 is 479001600

Числа Фибоначчи

Ещё один классический пример — рекурсивное вычисление чисел Фибоначчи:

#include <stdio.h>

int fibonacci(int n) {
    if (n == 0) return 0;
    if (n == 1) return 1;
    return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
    for (int i = 0; i < 10; i++) {
        printf("%d\n", fibonacci(i));
    }
    return 0;
}

Результат:

0
1
1
2
3
5
8
13
21
34

Важно: наивная рекурсия для Фибоначчи имеет экспоненциальную сложность O(2ⁿ). Для практических задач используйте итеративный алгоритм, мемоизацию или динамическое программирование.

Лучшие практики рекурсии

Язык C

  1. C# Hello World — создание вашего первого C# приложения
  2. Понимание ключевых слов и идентификаторов C#: правила, списки и лучшие практики
  3. Мастерство C# переменных и примитивных типов данных: полное руководство
  4. Операторы C# — исчерпывающее руководство по операторам в C#
  5. Освоение побитовых и сдвиговых операторов в C#: полное руководство
  6. Основы ввода-вывода в C#: Console.WriteLine, ReadLine и форматирование
  7. Выражения, операторы и блоки в C#: подробное руководство с примерами
  8. Освоение комментариев в C#: виды, лучшие практики и XML-документация
  9. Оператор break в C#: как и когда использовать
  10. Оператор continue в C#: как эффективно пропускать итерации циклов