FC ConcursosFC Concursos

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:

  1. 40319
  2. 40320
  3. 40322
  4. 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

Continue aprendendo