A necessidade de repetir o código nunca pode ser subestimada na busca por soluções para alguns dos maiores problemas do mundo. O que você precisa saber é que, na programação, a repetição assume uma de duas formas - iteração ou recursão.
O objetivo aqui é apresentar a repetição no código e demonstrar como ela pode ser usada para aprimorar seus programas Java.
Os programas repetitivos podem ajudá-lo a resolver alguns dos problemas de programação mais difíceis. Aqui está o que você precisa saber para criar programas recursivos em Java.
Usando Iteração
A iteração usa uma estrutura de loop para repetir o código. Os três tipos de estruturas iterativas são loop de pré-teste (while), loop de pós-teste (do-while) e loop controlado por contador (para).
Essas estruturas iterativas operam repetindo um bloco de código enquanto uma condição específica permanece verdadeiro, mas assim que essa condição se torna falsa, o loop para e o programa retorna ao seu normal fluxo.
Por exemplo, poderíamos empregar uma das estruturas iterativas para resolver o problema da soma de todos os inteiros de 1 a n. Dependendo da estrutura iterativa que é usada, a solução assumirá uma forma específica, mas qualquer uma das as três estruturas iterativas podem fornecer uma solução para este problema usando o seguinte pseudo-código.
Exemplo de pseudocódigo de iteração
COMEÇAR
DECLEARE soma, conta como inteiro
soma = 0
contagem = 1
REPETIR
Soma = soma + contagem
Contagem = contagem + 1
ATÉ contagem> n
FIM
O pseudocódigo acima tem duas variáveis, soma e contagem, que são inicializadas com 0 e 1, respectivamente. A variável "count" é inicializada com 1 porque o problema que estamos tentando resolver afirma que precisamos da soma de todos os inteiros de 1 a n.
A variável "n" será atribuída a um número aleatório do usuário e a variável "contagem" aumentará em um cada vez que um loop é executado, mas assim que o valor da variável "count" exceder o de "n", o loop irá Pare.
Por que usar a recursão?
Se examinarmos os fatos que envolvem a iteração e a recursão, descobriremos que várias coisas são verdadeiras.
- Ambos os métodos envolvem repetição.
- Ambos os métodos requerem uma condição de teste, que indicará quando parar.
- Ambos os métodos podem teoricamente ser executados para sempre se uma condição de saída não for fornecida ou atendida.
- Qualquer problema que pode ser resolvido usando iteração também pode ser resolvido usando recursão e vice-versa.
Então, por que escolheríamos um método em vez do outro? A resposta simples é eficiência. Com a recursão, um programador pode usar menos código para atingir o que é essencialmente o mesmo resultado. Menos código significa que há uma diminuição significativa na possibilidade de erros passarem despercebidos.
A recursão usa mais memória e é mais lenta do que a iteração, mas tem uma pilha embutida (estrutura de dados). Com a iteração, você teria que construir uma estrutura de dados (essencialmente reinventando a roda), deixando seu programa aberto a uma possibilidade maior de erros não detectados devido ao código extra.
Relacionado: Exceções Java: você está lidando com elas da maneira certa?
Como funciona a recursão
Recursão é o nome dado a um processo em que uma função se chama repetidamente até que uma condição específica seja atendida. Esse método repetitivo resolve problemas dividindo-os em versões menores e mais simples de si mesmos.
Cada função recursiva consiste em duas partes - caso base e caso geral.
Estrutura básica de um exemplo de função recursiva
Função(){
//caso base
//caso Geral
}
O caso base é a seção da função recursiva que resolve o problema. Assim, sempre que a função recursiva chega ao caso base, o programa sai da função recursiva e continua com seu fluxo natural.
O caso geral é a seção da função recursiva que é repetitiva. É aqui que a função chama a si mesma e onde a maior parte do trabalho é realizada.
Usando recursão em Java
Algumas linguagens de programação suportam apenas iteração, enquanto outras suportam apenas recursão. Felizmente, Java é uma das linguagens que oferece suporte a ambos os métodos repetitivos.
Em Java, a recursão é usada da mesma maneira que em qualquer outra linguagem que a suporte. A chave é sempre garantir que sua função recursiva tenha uma base e um caso geral, nessa ordem.
Vamos voltar ao nosso exemplo de soma inicial, o objetivo é encontrar a soma de todos os inteiros de 1 a n, onde n é um número inteiro fornecido pelo usuário.
Exemplo de recursão Java
// função recursiva
int Sum (int n) {
//caso base
if (n <= 1) {
return 1;
}
//caso Geral
senão{
retornar n + Soma (n-1);
}
}
A função recursiva acima leva um inteiro “n” e só termina sua execução quando o valor de n é menor ou igual a 1.
Se tivéssemos que passar o inteiro 5 para o programa acima, a variável "n" assumiria o valor 5. O valor de “n” seria então verificado no caso base, mas dado que 5 é maior que 1, “n” agora será passado para o caso geral.
Neste exemplo, o caso geral chamará a função recursiva quatro vezes. Na chamada de função final, o valor de "n" será 1, atendendo efetivamente aos requisitos do caso base, resultando no encerramento da função recursiva e no retorno de 15.
Se alterarmos o valor de “n” para 7, a função recursiva se chamará seis vezes e retornará 28 antes de encerrar sua execução.
Quer experimentar por si mesmo? Você pode executar o programa recursivo acima usando a seguinte linha de código na função principal do seu programa Java.
System.out.println (Soma (7));
O que você aprendeu
Se você leu todo este artigo, agora você tem uma compreensão básica dos dois métodos repetitivos que são usados na programação. Agora você reconhece as semelhanças entre iteração e recursão e por que um desenvolvedor escolheria usar recursão em vez de iteração e como usar uma função recursiva em Java.
Crédito da imagem: ThisIsEngineering /Pexels
Aprenda o básico da recursão, a ferramenta essencial, mas um tanto alucinante, para programadores.
Leia a seguir
- Programação
- Java
Kadeisha Kean é um desenvolvedor de software full-stack e redator técnico / tecnológico. Ela tem a habilidade distinta de simplificar alguns dos conceitos tecnológicos mais complexos; produzindo material que pode ser facilmente entendido por qualquer novato em tecnologia. Ela é apaixonada por escrever, desenvolver softwares interessantes e viajar pelo mundo (através de documentários).
Assine a nossa newsletter
Junte-se ao nosso boletim informativo para dicas técnicas, análises, e-books grátis e ofertas exclusivas!
Mais um passo…!
Confirme seu endereço de e-mail no e-mail que acabamos de enviar.