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

Съдържание

В този урок ще се научите да пишете рекурсивни функции в програмиране на 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()функцията.

Предимства и недостатъци на рекурсията

Рекурсията прави програмата елегантна. Ако обаче производителността е жизненоважна, вместо това използвайте цикли, тъй като рекурсията обикновено е много по-бавна.

Като се има предвид това, рекурсията е важна концепция. Често се използва в структурата на данните и алгоритмите. Например често се използва рекурсия при проблеми като обхождане на дърво.

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