English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico de Java

controle de fluxo Java

Java array

Java orientado a objetos (I)

Java orientado a objetos (II)

Java orientado a objetos (III)

Tratamento de Exceções Java

Java Lista (List)

Java Queue (fila)

conjuntos Java Map

conjuntos Java Set

Java entrada e saída (I/O)

Java Reader/Writer

outros tópicos do Java

Recursão Java

Neste tutorial, você aprenderá sobre funções recursivas em Java e suas vantagens e desvantagens.

no Java, chamar a si mesmométodochamado método recursivo. E esse processo é chamado de recursão.

Um exemplo do mundo físico é colocar dois espelhos paralelos um ao lado do outro. Qualquer objeto entre eles será refletido recursivamente.

Como funciona a recursão?

Gráfico de fluxo de trabalho do Java recursivo

No exemplo acima, chamamos o método recurse() internamente a partir do método main.  (chamada de método normal). E, dentro do método recurse(), chamamos novamente o mesmo método recurse. Isso é uma chamada recursiva.

Para parar as chamadas recursivas, precisamos fornecer algumas condições internamente no método. Senão, o método será chamado infinitamente.

portanto, usamosinstrução if ... else(ou método semelhante)parar a chamada recursiva interna.

exemplo: uso de recursão para o fatorial

class 	Fatorial 	{
    static 	int 	fatorial( 	int 	n 	) 	{
        if 	n 	!= 	0  // condição de parada
            return n * factorial(n-1); //chamada recursiva
        else
            retornar 1;
    }
    public 	static 	void 	main(String[] 	args) 	{
        int 	number 	= 4, 	result;
        result = fatorial(number);
        System.out.println(number + "	fatorial de = 	" + result);
    }
}

saída:

4 fatorial de = 24

No exemplo acima, temos um método chamado factorial(). Chamamos factorial() do método main(). Passamos a variável de número como parâmetro.

Aqui, note as seguintes sentenças:

return n * factorial(n-1);

O método factorial() está chamando a si mesmo. Inicialmente, o valor de n dentro de factorial() é4. Durante a próxima chamada recursiva, será3. Este processo continua até que n seja igual a 0.

Quando n é igual a 0, a sentença if retorna false, portanto, retorna1. Por fim, o resultado acumulado é passado para o método main().

Fluxo de Trabalho do Programa de Fatorial

A figura a seguir o ajudará a entender melhor como usar a recursão para executar o programa de fatorial.

Programa de Fatorial usando Recursão

Vantagens e Desvantagens da Recursão

Quando se realiza uma chamada recursiva, uma nova posição de armazenamento de variáveis é alocada na pilha. Com o retorno de cada chamada recursiva, as variáveis e parâmetros antigos são removidos da pilha. Portanto, a recursão geralmente consome mais memória e é mais lenta.

Por outro lado, a solução recursiva é muito mais simples e requer menos tempo para escrever, depurar e manter.