Questão nº 39

Questão de Tecnologia da Informação · FCC SEGEP-MA 2018 (nº 39)

FCC2018Analista Executivo - Programador de SistemasTecnologia da Informação
Gabarito: Dver comentário ↓

Considere o método abaixo, criado em Java:

public int ack(int n, int m){
    int ack;
    if(n==0)
        ack = m + 1;
    else if (n>0 && m==0)
        ack = ack(n - 1, m);
    else
        ack = ack(n - 1, ack(n, m - 1));
    return ack;
}

Se n receber 1 e m receber 4,

Resposta comentada

Gabarito Alternativa D

A recursão é uma técnica de programação onde uma função (ou método) chama a si mesma para resolver um problema. Ela funciona dividindo um problema grande em versões menores e mais simples de si mesmo, até atingir um caso base que pode ser resolvido diretamente, sem mais chamadas recursivas.

  • (A) Incorreta: A execução do método ack(1, 4) resulta no valor 5, não 12.
  • (B) Incorreta: Em Java, é permitido ter uma variável local com o mesmo nome do método. O compilador distingue entre a variável (ack) e a chamada do método (ack(...)) pelo contexto de uso. Armadilha da banca: Iniciantes podem confundir a variável local com o nome do método, pensando que há um conflito de nomes.
  • (C) Incorreta: A execução do método ack(1, 4) resulta no valor 5. O caso base m + 1 garante que o retorno será sempre maior que 0 para m >= 0.
  • (D) Correta: Ao rastrear a execução de ack(1, 4):
    • ack(1, 4) chama ack(0, ack(1, 3))
    • ack(1, 3) chama ack(0, ack(1, 2))
    • ack(1, 2) chama ack(0, ack(1, 1))
    • ack(1, 1) chama ack(0, ack(1, 0))
    • ack(1, 0) (onde n=1, m=0) chama ack(0, 0)
    • ack(0, 0) (onde n=0) retorna 0 + 1 = 1
    • ack(1, 0) retorna 1
    • ack(1, 1) se torna ack(0, 1) que retorna 1 + 1 = 2
    • ack(1, 2) se torna ack(0, 2) que retorna 2 + 1 = 3
    • ack(1, 3) se torna ack(0, 3) que retorna 3 + 1 = 4
    • ack(1, 4) se torna ack(0, 4) que retorna 4 + 1 = 5.
  • (E) Incorreta: É uma prática comum e válida em programação que o argumento de uma função seja o resultado de outra chamada de função (mesmo que recursiva). A chamada interna é avaliada primeiro, e seu resultado é passado como argumento para a chamada externa.

Fonte: FCC SEGEP-MA 2018 Analista Executivo - Programador de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho