НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Мова програмування C. Уроки W3Schools для початківців українською мовою

En Es De

C Рекурсія


Рекурсія

Рекурсія — це техніка здійснення самого виклику функції. Ця техніка дає змогу розділити складні проблеми на прості, які легше вирішити.

Рекурсія може бути трохи складною для розуміння. Найкращий спосіб зрозуміти, як це працює, — поекспериментувати з цим.


Приклад рекурсії

Скласти два числа легко, але додати діапазон чисел складніше. У наступному прикладі рекурсія використовується для додавання діапазону чисел шляхом розбиття її на просте завдання додавання двох чисел:

Приклад

int sum(int k);

int main() {
  int result = sum(10);
  printf("%d", result);
  return 0;
}

int sum(int k) {
  if (k > 0) {
    return k + sum(k - 1);
  } else {
    return 0;
  }
}
Спробуйте самі »

Пояснення прикладу

Коли викликається функція sum(), вона додає параметр k до суми всіх чисел, менших за k і повертає результат. Коли k стає 0, функція просто повертає 0. Під час роботи програма виконує такі дії:

10 + sum(9)
10 + ( 9 + sum(8) )
10 + ( 9 + ( 8 + sum(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + sum(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0

Оскільки функція не викликає сама себе, коли k дорівнює 0, програма зупиняється на цьому та повертає результат.

Розробник має бути дуже обережним з рекурсією, оскільки може бути дуже легко зробити написання функції, яка ніколи не закінчується, або такої, яка використовує надмірну кількість пам’яті чи потужності процесора. Однак, якщо її правильно написати, рекурсія може бути дуже ефективним і математично елегантним підходом до програмування.


Пояснення рекурсії від штучного інтелекту

Що таке рекурсія?

Рекурсія - це техніка програмування, яка дозволяє програмі викликати себе саму. Рекурсія може бути використана для розв’язання складних задач, які важко або неможливо розв’язати за допомогою інших методів.

Приклад

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

Ця програма обчислює факторіал числа. Факторіал числа n дорівнює добутку всіх цілих чисел від 1 до n.

Рекурсія може бути використана для розв’язання багатьох різних задач.

Ось кілька прикладів:

  • Обчислення факторіала
  • Пошук елементів в масиві
  • Рекурсивний спуск
  • Обчислення числа Пі

Рекурсія в мові С

  • Рекурсія в С реалізується за допомогою функцій
  • Функція, яка викликає себе саму, називається рекурсивною функцією
  • Рекурсивна функція повинна мати умову завершення, яка зупинить рекурсію

Негативні сторони рекурсії

  • Рекурсія може бути складною для розуміння і написання
  • Рекурсія може призвести до перевантажень стека

Висновок

Рекурсія - це потужна техніка програмування, яка може бути використана для розв’язання складних задач. Однак рекурсія може бути складною для розуміння і написання.