CESGRANRIO — Profissional Transpetro de Nível Superior - Junior: Ênfase: 4: Análise de Sistemas - Infraestrutura — Linguagens de programação — 2023

Enunciado

Deseja-se escrever um método Java que inverta a ordem dos caracteres existentes em um array recebido como parâmetro, conforme exemplificado na Figura a seguir. Esse método receberá como parâmetros o array a ser invertido e o índice do primeiro elemento do array, devendo funcionar com arrays de quaisquer comprimentos, inclusive com os de comprimentos iguais a zero. Qual método executa essa inversão da ordem dos caracteres de acordo com as especificações apresentadas?

Alternativas

  1. A)

    public static void inverte(char [] vet, int i) { int m=vet.length / 2; if(i < m) return; inverte(vet, i+1); char aux=vet[i]; vet[i]=vet[vet.length - i - 1]; vet[vet.length - i - 1] = aux; }

  2. B)

    public static void inverte(char [] vet, int i) { for ( ; i <= vet.length; i++) { char aux=vet[i]; vet[i]=vet[vet.length - i - 1]; vet[vet.length - i - 1] = aux; } }

  3. C)

    public static void inverte(char [] vet, int i) { do { char aux=vet[i]; vet[i]=vet[vet.length - i - 1]; vet[vet.length - i - 1] = aux; i++; } while (i < vet.length); }

  4. D)

    public static void inverte(char [] vet, int i) { int m=vet.length / 2; do { char aux=vet[i]; vet[i]=vet[vet.length - i - 1]; vet[vet.length - i - 1] = aux; i++; } while (i < m); }

  5. E)

    public static void inverte(char [] vet, int i) { int m=vet.length / 2; if(i == m) return; char aux=vet[i]; vet[i]=vet[vet.length - i - 1]; vet[vet.length - i - 1] = aux; inverte(vet, i+1); }

Gabarito e comentário

Resposta correta: E

A alternativa E interrompe a recursão quando o índice i chega à metade do vetor e, antes de cada chamada seguinte, troca o elemento da posição i pelo elemento simétrico vet.length - i - 1. Assim, cada par é trocado uma única vez. Para vetor vazio, m vale zero e a condição i == m provoca retorno imediato, evitando acesso inválido ao array. As alternativas com do-while acessam o vetor antes de verificar a condição e podem falhar em vetores vazios. Alternativa E.

Questões relacionadas