Linguagem C: Recursividade
Links relacionados: Programação em C
O que é recursividade?
Quando uma função chama a si mesma, dizemos que é uma função recursiva. Alguns tipos de algoritmos podem utilizar de forma bastante eficaz este recurso. Contudo, temos que tomar muito cuidado ao utilizá-lo.
Toda vez que chamamos uma função, o programa aloca os recursos necessário para executá-la, incluindo ponteiros, variáveis, etc. Se esta função chama outra, o programa manterá esta na memória e irá alocar os recursos para a função que está sendo chamada por esta.
Uma função recursiva não é diferente de qualquer função quanto à alocação de memória, ou seja, a cada chamada recursiva, estaremos alocando mais espaço para poder conter os recursos necessários, é como se estivéssemos chamando qualquer outra função.
Por isso, é de essencial que haja um ponto de parada na função recursiva para que ela não fique sendo chamada infinitamente. Além disso, temos que cuidar muito com a utilização da memória. Há um limite e, se esse limite for extrapolado, o programa vai abortar.
Exemplo
Função para calcular o fatorial de um número.
1#include <stdio.h>
2
3int fat(int n) {
4 if (n > 0) {
5 return n * fat(n - 1);
6 }
7 return 1;
8}
9
10int main() {
11 int n;
12 printf("Entre com um valor: ");
13 scanf("%d", &n);
14 printf("O fatorial de %d é %d\n", n, fat(n));
15}