Questão de Programação — Linguagens de programação — FCC 2013
ProgramaçãoLinguagens de programação
- Código
- fc002018
- Banca
- FCC
- Órgão
- DPE-SP
- Ano
- 2013
- Nível
- Médio
- Cargo
- Programador de computador
As duas classes a seguir resolvem o mesmo problema, porém, a ClasseB utiliza recursão e a ClasseA, não: public class ClasseB { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("Entre com o valor de n:"); int n = in.nextInt(); for (int i = 1; i <= n; i++) { long f = teste(i); System.out.println(f); } } public static long teste(int n) { if (n <= 2) { return 1; } else { return teste(n - 1) + teste(n - 2); } } } import java.util.Scanner; public class ClasseA { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("Entre com o valor de n:"); int n = in.nextInt(); for (int i = 1; i <= n; i++) { long f = teste(i); System.out.println(f); } } public static long teste(int n) { if (n <= 2) return 1; long a=1; long b=1; long c = 1; for (int i=3; i<=n; i++){ c=a+b; b=a; a=c; } return c; } } Analisando as duas classes e refletindo sobre o uso de recursão é possível concluir que
- Ase o valor digitado e armazenado na variável n for 50, a ClasseB que utiliza recursão executa mais rapidamente que a ClasseA.
- Bse o valor digitado e armazenado na variável n for 5, será exibido na tela os valores 1, 3, 6, 10 e 15, um abaixo do outro.
- Cse o valor digitado e armazenado na variável n for 50, a ClasseA que não utiliza recursão executa mais rapidamente que a ClasseB.
- Dse o valor digitado e armazenado na variável n for 5, será exibido na tela os valores 1, 2, 6, 24 e 120, um abaixo do outro.
- Eem todas as situações, inclusive nos exemplos apresentados, o uso de recursão melhora a eficiência do algoritmo, melhorando o desempenho da aplicação.