Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Recursão | Métodos
Java Avançado
course content

Conteúdo do Curso

Java Avançado

Java Avançado

1. Estrutura Profunda do Java
2. Métodos
3. String Avançado
4. Classes
5. Classes Avançadas

book
Recursão

Como quebrar seu código facilmente?

Por que isso pode quebrar o código? Porque pode levar a uma recursão infinita, que consumirá memória indefinidamente e reduzirá o desempenho do dispositivo. Então, por que precisamos de recursão? Em alguns casos, a recursão pode ser útil, mas deve ser utilizada com cautela. Por exemplo, a recursão pode substituir um laço while. Vamos analisar um exemplo de uso de recursão para calcular a soma de todos os números até um número passado como parâmetro:

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below System.out.println(calculateSum(5)); } // method to calculate the sum of numbers from 1 to num using recursion static int calculateSum(int num) { // if num is greater than 0, recursively calculate the sum if (num > 0) { num = num + calculateSum(num - 1); } else { return 0; } return num; } }

O método calculateSum() chama a si mesmo com valores reduzidos. Também há um ponto de saída dessa recursão quando a variável num se torna zero. Este método calcula a soma de todos os números de 1 até o parâmetro, no nosso caso 5. Vamos analisar o fluxograma que mostra como a recursão funciona usando este método como exemplo:

O exemplo acima demonstra como o método chama a si mesmo com valores reduzidos e, ao atingir zero, retorna somando os valores. Também é possível observar como o corpo do bloco if é executado, onde adicionamos num ao resultado da chamada do método com um valor reduzido. Os valores intermediários após cada chamada do método são indicados próximos às setas.

Podemos evitar o uso de recursão?

A recursão também pode ser substituída por um laço comum. Veja um exemplo em que primeiro utilizamos um método recursivo e, em seguida, utilizamos um laço for para realizar a mesma operação:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930313233
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below int num = 5; // printing the result of the recursive sum calculation System.out.println("Result using recursion: " + calculateSum(num)); int result = 0; // calculating the sum using a for-loop for (int i = 1; i <= num; i++) { result = result + i; } // printing the result of the sum calculation using the for-loop System.out.println("Result using for-loop: " + result); } // method to calculate the sum of numbers from 1 to num using recursion static int calculateSum(int num) { // if num is greater than 0, recursively calculate the sum if (num > 0) { num = num + calculateSum(num - 1); } else { return 0; } return num; } }

Aqui podemos ver como substituímos nosso método recursivo por um loop for comum, usando a variável i para incrementar nosso result por i a cada vez até atingir o número especificado num, que é o parâmetro do método.

Conclusão

Em conclusão, métodos recursivos podem ser úteis, mas também arriscados. A recursão pode frequentemente ser substituída por loops e, embora possa simplificar certas tarefas, também pode causar problemas se não for usada com cuidado. Se optar por usar recursão, mesmo com experiência, certifique-se de proceder com cautela.

1. O que é recursão em Java?

2. Qual é melhor de usar, recursão ou um loop regular?

question mark

O que é recursão em Java?

Select the correct answer

question mark

Qual é melhor de usar, recursão ou um loop regular?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 7

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

course content

Conteúdo do Curso

Java Avançado

Java Avançado

1. Estrutura Profunda do Java
2. Métodos
3. String Avançado
4. Classes
5. Classes Avançadas

book
Recursão

Como quebrar seu código facilmente?

Por que isso pode quebrar o código? Porque pode levar a uma recursão infinita, que consumirá memória indefinidamente e reduzirá o desempenho do dispositivo. Então, por que precisamos de recursão? Em alguns casos, a recursão pode ser útil, mas deve ser utilizada com cautela. Por exemplo, a recursão pode substituir um laço while. Vamos analisar um exemplo de uso de recursão para calcular a soma de todos os números até um número passado como parâmetro:

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below System.out.println(calculateSum(5)); } // method to calculate the sum of numbers from 1 to num using recursion static int calculateSum(int num) { // if num is greater than 0, recursively calculate the sum if (num > 0) { num = num + calculateSum(num - 1); } else { return 0; } return num; } }

O método calculateSum() chama a si mesmo com valores reduzidos. Também há um ponto de saída dessa recursão quando a variável num se torna zero. Este método calcula a soma de todos os números de 1 até o parâmetro, no nosso caso 5. Vamos analisar o fluxograma que mostra como a recursão funciona usando este método como exemplo:

O exemplo acima demonstra como o método chama a si mesmo com valores reduzidos e, ao atingir zero, retorna somando os valores. Também é possível observar como o corpo do bloco if é executado, onde adicionamos num ao resultado da chamada do método com um valor reduzido. Os valores intermediários após cada chamada do método são indicados próximos às setas.

Podemos evitar o uso de recursão?

A recursão também pode ser substituída por um laço comum. Veja um exemplo em que primeiro utilizamos um método recursivo e, em seguida, utilizamos um laço for para realizar a mesma operação:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930313233
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below int num = 5; // printing the result of the recursive sum calculation System.out.println("Result using recursion: " + calculateSum(num)); int result = 0; // calculating the sum using a for-loop for (int i = 1; i <= num; i++) { result = result + i; } // printing the result of the sum calculation using the for-loop System.out.println("Result using for-loop: " + result); } // method to calculate the sum of numbers from 1 to num using recursion static int calculateSum(int num) { // if num is greater than 0, recursively calculate the sum if (num > 0) { num = num + calculateSum(num - 1); } else { return 0; } return num; } }

Aqui podemos ver como substituímos nosso método recursivo por um loop for comum, usando a variável i para incrementar nosso result por i a cada vez até atingir o número especificado num, que é o parâmetro do método.

Conclusão

Em conclusão, métodos recursivos podem ser úteis, mas também arriscados. A recursão pode frequentemente ser substituída por loops e, embora possa simplificar certas tarefas, também pode causar problemas se não for usada com cuidado. Se optar por usar recursão, mesmo com experiência, certifique-se de proceder com cautela.

1. O que é recursão em Java?

2. Qual é melhor de usar, recursão ou um loop regular?

question mark

O que é recursão em Java?

Select the correct answer

question mark

Qual é melhor de usar, recursão ou um loop regular?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 7
some-alt