Mudanças entre as edições de "Pensamento Computacional - Tópicos Adicionais"
Ir para navegação
Ir para pesquisar
Linha 18: | Linha 18: | ||
Observe se tivermos um método para o cálculo de fatorial de n, então ele pode se "autoinvocar" para calcular para n-1. Vamos a um exemplo: | Observe se tivermos um método para o cálculo de fatorial de n, então ele pode se "autoinvocar" para calcular para n-1. Vamos a um exemplo: | ||
+ | |||
+ | <syntaxhighlight lang=java> | ||
+ | public class FatorialRecursivo { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | // Testando o método fatorial | ||
+ | int numero = 5; | ||
+ | long resultado = calcularFatorial(numero); | ||
+ | System.out.println("O fatorial de " + numero + " é: " + resultado); | ||
+ | } | ||
+ | |||
+ | // Função recursiva para calcular o fatorial de um número | ||
+ | public static long calcularFatorial(int n) { | ||
+ | // Caso base: fatorial de 0 ou 1 é 1 | ||
+ | if (n == 0 || n == 1) { | ||
+ | return 1; | ||
+ | } else { | ||
+ | // Chamada recursiva: fatorial(n) = n * fatorial(n-1) | ||
+ | return n * calcularFatorial(n - 1); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> |
Edição das 14h45min de 11 de dezembro de 2023
Conceito de Recursividade
Determinados problemas podem ser resolvidos de forma muito elegante e compacta usando o conceito de recursividade.
A recursividade acontece quando um método chama a ele mesmo resolvendo um determinado problema para um subconjunto de dados. Um bom exemplo de solução com recursividade é o problema de calcular o fatorial. Observe que o fatorial de 5, por exemplo, é:
Por sua vez, podemos reescrever da seguinte forma:
Observe se tivermos um método para o cálculo de fatorial de n, então ele pode se "autoinvocar" para calcular para n-1. Vamos a um exemplo:
public class FatorialRecursivo {
public static void main(String[] args) {
// Testando o método fatorial
int numero = 5;
long resultado = calcularFatorial(numero);
System.out.println("O fatorial de " + numero + " é: " + resultado);
}
// Função recursiva para calcular o fatorial de um número
public static long calcularFatorial(int n) {
// Caso base: fatorial de 0 ou 1 é 1
if (n == 0 || n == 1) {
return 1;
} else {
// Chamada recursiva: fatorial(n) = n * fatorial(n-1)
return n * calcularFatorial(n - 1);
}
}
}