Linguagem C: Recursividade

De Aulas

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}