ProgramaçãoLinguagens de programação
- (FCC 2013)
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
A) se o valor digitado e armazenado na variável n for 50, a ClasseB que utiliza recursão executa mais rapidamente que a ClasseA.
B) se 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.
C) se 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.
D) se 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.
E) em 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.
Próximo:
EXERCÍCIOS - Exercício 401
Vamos para o Anterior: Exercício 399
Tente Este: Exercício 418
Primeiro: Exercício 1
VOLTAR ao índice: Programação