O fatorial de um número é um importante conceito matemático. Você pode usá-lo para realizar permutações e combinações, escrever expressões exponenciais e logarítmicas e calcular probabilidades.
Você o usa para encontrar o número de maneiras diferentes de criar um arranjo de assentos ou escolher camisetas para suas férias nas Maldivas. Mas como você pode calcular o fatorial de um número?
O que é o fatorial de um número?
O fatorial de um número positivo é o produto de todos os inteiros positivos menores ou iguais ao valor do próprio número. Um número seguido por um ponto de exclamação (!) denota o fatorial de um número. Você representa o fatorial de cinco como 5! e calcule como:
5! = 5 * 4 * 3 * 2 * 1 = 120
Outra forma de visualizar é:
5! = 5 * 4! onde 4! = 4 * 3!, 3! = 3 * 2! e assim por diante até obter 1! = 1 * 0! que é 1.
Você usará esse conceito para construir nosso programa fatorial usando um conceito popular chamado recursão.
O que é recursão?
A recursão é um processo no qual uma função chama a si mesma. Uma das principais vantagens desse processo é que ele divide um problema maior em partes menores. Isso torna o problema mais fácil de resolver.
Você pode usar a recursão para resolver problemas apropriados em três etapas fáceis:
- Encontre o caso base: Se uma função sempre chama a si mesma, o processo será infinito. Para evitar que isso aconteça, defina um caso base que se torne o ponto de parada lógico para sua função. Por exemplo, em um programa fatorial, pare o cálculo em zero. Isso se torna o caso base para o problema.
- Encontre a relação entre o problema e os subproblemas: Divida o problema maior em um subproblema. Por exemplo, o problema é encontrar o fatorial de cinco. Suponha que você tenha a resposta do fatorial de quatro, ou seja, 24. Como você obterá o fatorial de cinco usando 24? Multiplicando o próprio cinco nele. Esta é a relação entre o problema e o subproblema.
- Generalize a relação encontrada no Passo 2: Agora que você tem a relação, generalize-a em termos de n. Assim, o fatorial de um número n é o produto de n e o fatorial de n-1.
Você pode usar esse conceito para encontre a soma de n números naturais, calcule GCD, LCM, a série de Fibonacci e verifique os números primos.
Pseudocódigo para a função fatorial usando recursão
Isso é como você usa recursão e escreva o pseudocódigo para construir seu programa em qualquer linguagem. Com linguagens diferentes, a sintaxe e a execução mudam, mas a lógica permanece intacta.
funçãoFacto(n)
Se n == 0 então // caso base
Retornar1
Retornar n * Fato da Chamada (n - 1) // relação generalizada
Programa Fatorial em C
C foi a primeira linguagem de programação independente de plataforma de alto nível. Ele tem uma sintaxe estrita, diferencia maiúsculas de minúsculas e executa o código com a velocidade mais rápida. É uma linguagem de programação procedural e, portanto, você declara qualquer função em cima da principal função. Veja como você pode construir o programa fatorial usando recursão na linguagem C:
Você pode encontrar todo o código-fonte do programa fatorial usando recursão em C, Java e Python neste Repositório GitHub.
- Importe o arquivo de cabeçalho de saída de entrada padrão para exibir a saída na tela.
#incluir <stdio.h>
- Definir função facto e pegue inteiro n como argumento.
intfacto(int n){
- Escreva o caso base da função usando o se declaração e verifique sua igualdade usando ==. Se n for igual a zero, retorna um.
se (n == 0)
retornar1; - Escreva a equação generalizada e retorne o produto de n com uma chamada de função do subproblema n-1.
retornar n * fato (n - 1);
} - Declare a função principal e inicialize uma variável do tipo inteiro para armazenar o número cujo fatorial você deseja encontrar.
intprincipal(){
int num = 5; - Exiba o fatorial do número usando o printf() função. %d é o especificador de formato decimal. Use cada um dos especificadores de formato para substituí-lo pelo número cujo fatorial você deseja encontrar e obtenha o resultado chamando a função.
printf("O fatorial de %d é %d", num, fato (num));
retornar0;
}
Programa fatorial em Java
Java é uma linguagem de programação compilada e independente de plataforma. Você armazena todo o código dentro de um aula e a execução começa a partir do principal função. É sensível a maiúsculas e minúsculas e a sintaxe estrita. O código é um pouco mais longo, mas mais rápido em comparação com o Python. Veja como você pode construir o programa fatorial usando recursão em Java:
- Defina a classe Principal.
aulaPrincipal{
- Defina uma função estática com tipo de retorno int que aceita uma variável n do tipo inteiro. Você declarou um método estático como o método principal em Java também é declarado como estático. Além disso, você não pode chamar um método não estático de uma instância estática.
estáticointfacto(int n){
- Escreva o caso base da função usando o se declaração e verifique sua igualdade usando ==. Se n for igual a zero, retorna um.
se (n == 0)
retornar1; - Escreva a equação generalizada e retorne o produto de n com uma chamada de função do subproblema n-1.
retornar n * fato (n - 1);
} - Declare a função principal em Java. Declare o modificador de acesso como público, para que possa ser acessado por todas as outras classes e métodos. Você declara a função principal como estático para que o compilador possa invocá-lo sem instanciar a classe. O tipo de retorno é vazio, e aceita argumentos do tipo Corda. Armazene o número cujo fatorial você deseja encontrar.
públicoestáticovazioprincipal(String[] argumentos){
int num = 5; - Use o println() método, uma instância do PrintStream classe, definida no Sistema classe para exibir o fatorial do número.
System.out.println("fatorial de " + num + " é " + fato (num));
}
}
Programa fatorial em Python
Escrever código em Python é super fácil e divertido. Como é uma linguagem interpretada independente de plataforma, você não precisa declarar o tipo de dados das variáveis. Você também evita ter que declarar classes e importar bibliotecas para um programa tão simples. O playground está pronto para você começar a codificar.
A sintaxe é mais fácil, com um tamanho de código pequeno, mas leva um pouco mais de tempo para executar do que as outras linguagens. Veja como você pode construir o programa fatorial usando recursão em Python:
- Defina a função fact que aceita como argumento n.
deffacto(n):
- Escreva o caso base da função usando o se declaração e verifique sua igualdade usando ==. Se n for igual a zero, retorna um.
se n == 0:
retornar1 - Escreva a equação generalizada e retorne o produto de n com uma chamada de função do subproblema n-1.
retornar n * fato (n-1)
- Armazene o número cujo fatorial você deseja encontrar e exiba-o usando a instrução print.
num = 5;
imprimir("fatorial de", num, "é", fato (num))
Existem muitas aplicações de recursão
A recursão é uma maneira eficaz de resolver problemas. É o ponto crucial da Inteligência Artificial e tem usos no mundo real em jogos de quebra-cabeça, como xadrez ou Sudoku.
Também é um método poderoso para classificar estruturas de dados, como árvore ou algoritmos de classificação, como classificação rápida e classificação por mesclagem. Você também pode usar a recursão em algoritmos de pesquisa como pesquisa binária, expressões matemáticas como a série de Fibonacci e muito mais.