В този урок ще се научите да пишете рекурсивни функции в програмиране на C с помощта на пример.
Функция, която се извиква, е известна като рекурсивна функция. И тази техника е известна като рекурсия.
Как работи рекурсията?
void repeatse () (… repeatse (); …) int main () (… repeatse (); …)
Рекурсията продължава, докато не е изпълнено някакво условие за предотвратяване.
За да се предотврати безкрайна рекурсия, може да се използва оператор 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()
функцията.
Предимства и недостатъци на рекурсията
Рекурсията прави програмата елегантна. Ако обаче производителността е жизненоважна, вместо това използвайте цикли, тъй като рекурсията обикновено е много по-бавна.
Като се има предвид това, рекурсията е важна концепция. Често се използва в структурата на данните и алгоритмите. Например често се използва рекурсия при проблеми като обхождане на дърво.