Questão FC374759
Considere a lógica do algoritmo a seguir desenvolvido em Java: import java.util.Scanner; public class Main { public static int questao(int n) { if ((n == 0) || (n == 1)) return 1;
Linguagens de Programação
Instituto Consulplan · 2023
Considere a lógica do algoritmo a seguir desenvolvido em Java:
import java.util.Scanner;
public class Main
{
public static int questao(int n) {
if ((n == 0) || (n == 1))
return 1;
else
return n * questao(n - 1);
}
public static void main(String[] args) {
System.out.print("digite um valor: ");
Scanner scan = new Scanner(System.in);
int valor = scan.nextInt();
System.out.println("Resultado: " + valor + " é " +
questao(valor));
scan.close();
}
}
Nessa situação, será apresentado o seguinte resultado da execução se for inserido o valor 8:
- 40319
- 40320
- 40322
- 40325
Mostrar resposta e comentário
Gabarito
B
Comentário do professor
O método questao implementa uma **recursão** que calcula o fatorial de n. Há um **caso base**: quando n == 0 ou n == 1, a função retorna 1, interrompendo as chamadas recursivas.
Para n = 8, a condição do caso base é falsa, então a chamada segue a regra de recursão: retorna \(8 \times questao(7)\). Essa chamada gera \(7 \times questao(6)\), e assim por diante, até chegar em \(questao(1)\), que retorna 1.
No desempacotamento das chamadas obtemos a multiplicação completa: \(8! = 8 \times 7 \times 6 \times 5 \times 4 \times 3 \times 2 \times 1\).
Portanto, o resultado é \(8! = 40320\).
Conteúdo do catálogo FC Concursos · Atualizado em