Questão nº 60

Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2021 (nº 60)

CESGRANRIO2021Técnico Científico - Área de Formação: Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Cver comentário ↓

Considere a classe Java abaixo.

public class Main {

    public static void main(String[] args) {
        String s1="Brasil",s2="";
        s2=geraString(s1, s2, 0);
        System.out.println(s2);
    }
    public static String geraString(String s1, String s2, int cont) {
        if(cont==s1.length())
            return s2;
        String vogal="aeiou";
        char c=s1.charAt(s1.length()-cont-1);
        if(vogal.indexOf(c) < 0)
            s2+=Character.toString(c);
        else
            s2+=".";
        cont++;
        return geraString(s1, s2, cont);
    }
}

O que o console exibirá quando o método main() for executado?

Resposta comentada

Gabarito Alternativa C

Conceito-chave: A recursão é uma função que chama a si mesma até atingir uma condição de parada. Aqui, a cada chamada, ela pega o caractere da posição invertida (do fim para o começo) de s1, e substitui vogais por . e consoantes pela própria letra, montando s2 de trás para frente.

  • (A) Incorreta: .i.a.. seria o resultado se a string fosse percorrida do início para o fim (posição cont em vez de s1.length()-cont-1), mas a função usa a posição invertida.
  • (B) Incorreta: ..a.i. também inverte a ordem de montagem, mas mantém a posição original; aqui a ordem correta é invertida (começa com a última letra de "Brasil").
  • (C) Correta: A função começa com cont=0, pega s1.charAt(5) = l (consoante), depois s1.charAt(4) = i (vogal → .), depois s1.charAt(3) = s (consoante), depois s1.charAt(2) = r (consoante), depois s1.charAt(1) = a (vogal → .), e por fim s1.charAt(0) = B (consoante). Montando na ordem: l + . + s + r + . + B = l.s.rB.
  • (D) Incorreta: Br.s.l seria o resultado se a string fosse percorrida do início para o fim (posição cont), mas com a lógica de vogais/consoantes correta; aqui a ordem está errada.
  • (E) Incorreta: Brasil seria o resultado se não houvesse substituição de vogais por . e se a ordem não fosse invertida; a função altera ambos.

Armadilha do distrator mais tentador (B): A banca inverte a lógica de montagem, mas mantém a posição original. Quem não percebe que s1.length()-cont-1 começa no último caractere (índice 5) e vai até o primeiro (índice 0) cai na pegadinha, achando que a string é lida da esquerda para a direita.

Fonte: CESGRANRIO BASA 01/2021 Técnico Científico - Área de Formação: Tecnologia da Informação. 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