C - Recursão

Recursão é o processo de repetir itens de uma maneira semelhante. Em linguagens de programação, se um programa permite que você chame uma função dentro da mesma função, é chamado de chamada recursiva da função.

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

int main() {
   recursion();
}

A linguagem de programação C suporta recursão, ou seja, uma função para chamar a si mesma. Mas, ao usar recursão, os programadores precisam ter cuidado para definir uma condição de saída da função, caso contrário, ela entrará em um loop infinito.

Funções recursivas são muito úteis para resolver muitos problemas matemáticos, como cálculo do fatorial de um número, geração de séries de Fibonacci, etc.

Número Fatorial

O exemplo a seguir calcula o fatorial de um determinado número usando uma função recursiva -

#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;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Factorial of 12 is 479001600

Série Fibonacci

O exemplo a seguir gera a série Fibonacci para um determinado número usando uma função recursiva -

#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;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

0	
1	
1	
2	
3	
5	
8	
13	
21	
34