quarta-feira, 16 de julho de 2014

Recursividade: Número fatorial usando função recursiva - Linguagem C

Do mesmo modo que em outras linguagens, em C é possível elaborar uma função
que chama a si mesma, isto é, uma função recursiva.

Recursividade é o fato de permitir que uma função chame a si mesma direta ou indiretamente.

Temos que apenas tomar o cuidado de ver se a função tem um método de parada  porque senão ela pode entrar em loop sempre chamando a si mesma novamente.

Nesse exemplo vamos ver o resultado do fatorial de um número inteiro.

Apenas para esclarecer o que é um número fatorial, é:

Ao produto dos números naturais começando em n e decrescendo até 1 denominamos de fatorial de n e representamos por n!.

Segundo tal definição, o fatorial de 5 é representado por 5! e lê-se 5 fatorial.
5! é igual a 5 . 4 . 3 . 2 . 1 que é igual a 120, assim como 4! é igual a 4 . 3 . 2 . 1 que é igual a 24, como 3! é igual a 3 . 2 . 1 que é igual a 6 e que 2! é igual a 2 . 1 que é igual a 2.

Por definição tanto 0!, quanto 1! são iguais a 1.
Retirado do site: http://www.matematicadidatica.com.br/Fatorial.aspx
Clique aqui para mais informações sobre fatorial.

Obs: Na linha 12 o comando usado são comando do sistema operacional utilizado, através da importação da biblioteca stdlib.h o comando cls é um comando windows para limpar a tela do prompt.


#include <stdio.h> /* Importa biblioteca para entrada e saída de dados */
#include <stdlib.h> /* Biblioteca importada para o método system */
int fatorial (int x) /* Função fatorial que retorna um inteiro e recebe por parametro um valor inteiro também */
{
    if (x == 0)
        return 1;
    else
        return x*(fatorial(x-1)); /* Retorno da função chamando ela novamente mas decrementando a variável x em 1 */
}
void main (){ /* Método principal iniciado */
    int num, resposta; /* Declaração de variáveis */
    system("cls"); /* Comando windows para limpar tela */
    printf("Digite um numero inteiro :");
    scanf ("%d", &num);
    resposta = fatorial(num); /* Chama a função fatorial passando o número recebido por parâmetro e armazenando o resultado na variável resposta */
    printf ("O fatorial e %d", resposta);
}



Nenhum comentário:

Postar um comentário