Tutoriais Java

Java HOME Introdução ao Java Java Começar Sintaxe Java Comentários Java Variáveis ​​Java Tipos de dados Java Cast de tipo Java Operadores Java Strings Java Java Math Java Booleanos Java Se... Senão Comutador Java Java While Loop Java para loop Java Break/Continuar Matrizes Java

Métodos Java

Métodos Java Parâmetros do método Java Sobrecarga do método Java Escopo Java Recursão Java

Classes Java

Java OOP Classes/objetos Java Atributos de classe Java Métodos de classe Java Construtores Java Modificadores Java Encapsulamento Java Pacotes Java / API Herança Java Polimorfismo Java Classes internas de Java Abstração Java Interface Java Enumerações Java Entrada de usuário Java Data Java Java ArrayList Java LinkedList Java HashMap Java HashSet Iterador Java Classes Java Wrapper Exceções Java Java RegEx Threads Java Java Lambda

Manipulação de arquivos Java

Arquivos Java Java Criar/Gravar Arquivos Arquivos de leitura Java Java Excluir Arquivos

Java como fazer

Adicionar dois números

Referência Java

Palavras-chave Java Métodos de String Java Métodos matemáticos Java

Exemplos Java

Exemplos Java Compilador Java Exercícios de Java Teste Java Certificado Java


Recursão Java


Recursão Java

A recursão é a técnica de fazer uma função chamar ela mesma. Esta técnica fornece uma maneira de quebrar problemas complicados em problemas simples que são mais fáceis de resolver.

A recursão pode ser um pouco difícil de entender. A melhor maneira de descobrir como funciona é experimentando.


Exemplo de recursão

Adicionar dois números é fácil de fazer, mas adicionar um intervalo de números é mais complicado. No exemplo a seguir, a recursão é usada para adicionar um intervalo de números, dividindo-o na simples tarefa de adicionar dois números:

Exemplo

Use recursão para somar todos os números até 10.

public class Main {
  public static void main(String[] args) {
    int result = sum(10);
    System.out.println(result);
  }
  public static int sum(int k) {
    if (k > 0) {
      return k + sum(k - 1);
    } else {
      return 0;
    }
  }
}

Exemplo explicado

Quando a sum()função é chamada, ela adiciona parâmetro kà soma de todos os números menores que ke retorna o resultado. Quando k se torna 0, a função retorna apenas 0. Ao executar, o programa segue os seguintes passos:

10 + soma(9)
10 + ( 9 + soma(8) )
10 + ( 9 + ( 8 + soma(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + soma(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0

Como a função não chama a si mesma quando ké 0, o programa para por aí e retorna o resultado.


Condição de parada

Assim como os loops podem se deparar com o problema do loop infinito, as funções recursivas podem se deparar com o problema da recursão infinita. Recursão infinita é quando a função nunca para de chamar a si mesma. Toda função recursiva deve ter uma condição de parada, que é a condição em que a função para de chamar a si mesma. No exemplo anterior, a condição de parada é quando o parâmetro kse torna 0.

É útil ver uma variedade de exemplos diferentes para entender melhor o conceito. Neste exemplo, a função adiciona um intervalo de números entre um início e um fim. A condição de parada para esta função recursiva é quando end não é maior que start :

Exemplo

Use a recursão para somar todos os números entre 5 e 10.

public class Main {
  public static void main(String[] args) {
    int result = sum(5, 10);
    System.out.println(result);
  }
  public static int sum(int start, int end) {
    if (end > start) {
      return end + sum(start, end - 1);
    } else {
      return end;
    }
  }
}