Recursão em Linguagem C

Recursão em Linguagem C

Neste post vamos ver recursão em linguagem C e vamos criar uma função recursiva capaz de calcular o fatorial de um número.

Abaixo segue o vídeo mostrando como implementar a recursão em linguagem C e o funcionamento do código:

Código

A recursão ocorre quando uma função chama a si mesma para executar uma determinada tarefa, funciona como se fosse um laço de repetição. Entretanto, é preciso observar que a recursão consome muita memória uma vez que ela vai criar várias chamadas de si mesma.

Abaixo é apresentado o código fonte em linguagem C.

#include <stdio.h>

int y = 1;
int x = 0;

int fatorial(int n) {
        if (n == 0) {
                return 1;
        }

        y *= n;
        n -= 1;

        if (n < 1) {
                return y;
        }
        else {
                fatorial(n);
        }
}

int main() {
        printf ("Entre com um valor para calcular o fatorial: \n");
        scanf ("%d", &x);

        x = fatorial(x);

        printf ("O valor do fatorial é %d \n", x);

        return 0;
}

É preciso observar que assim como o laço de repetição é necessário que a recursão tenha uma condição de parada, como no exemplo apresentado, toda vez que a função é chamada ela decrementa em uma unidade o valor de n, e a condição de parada é quando n for menor do que 1.

Como o exemplo dado foi usar recursão para calcular o valor do fatorial de um número, foi necessário adicionar uma condição para quando o usuário digita zero como entrada, que no caso deve retornar um.

Conclusão

É preciso observar que o uso de recursão em linguagem C e até mesmo em outras linguagens de programação pode resolver uma série de problemas, mas é preciso verificar se não é possível resolver os mesmos problemas usando outros recursos de programação, como por exemplo de laços de repetição, uma vez que o uso de recursão pode consumir uma quantidade considerável de memória e tornar a aplicação mais lenta.

Existem técnicas que podem ser utilizadas para usar recursão e diminuir o consumo de memória.

Isso é tudo pessoal e até o próximo post.