Учебники

C — рекурсия

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

void recursion() {
   recursion(); /* function calls itself */
}

int main() {
   recursion();
}

Язык программирования C поддерживает рекурсию, то есть функцию, которая вызывает сама себя. Но при использовании рекурсии программистам нужно быть осторожными, чтобы определить условие выхода из функции, иначе оно войдет в бесконечный цикл.

Рекурсивные функции очень полезны для решения многих математических задач, таких как вычисление факториала числа, генерация рядов Фибоначчи и т. Д.

Номер Факториал

В следующем примере вычисляется факториал данного числа с использованием рекурсивной функции —

Live Demo

#include <stdio.h>

unsigned long long int factorial(unsigned int i) {

   if(i <= 1) {
      return 1;
   }
   return i * factorial(i - 1);
}

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

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

Factorial of 12 is 479001600

Серия Фибоначчи

В следующем примере генерируется ряд Фибоначчи для заданного числа с использованием рекурсивной функции —

Live Demo

#include <stdio.h>

int fibonacci(int i) {

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

int  main() {

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

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —