Alternativa E
O código apresentado é uma função recursiva projetada para imprimir uma string e chamá-la novamente até atingir um limite específico de tamanho. Para entender quando ela termina, precisamos analisar a condição de parada (caso base) e como a variável muda em cada chamada.
Análise da Lógica do Código:
- Condição de Execução: A linha
if (s.length() < 15) verifica se o tamanho atual da string é menor que 15 caracteres. - Passo Recursivo: Se a condição for verdadeira, o código imprime a string e chama
strRecur(s + "*"). Isso adiciona um asterisco à string em cada novo chamado, aumentando seu comprimento em 1 unidade. - Encerramento: Como o comprimento cresce a cada passo, eventualmente ele atingirá o valor 15.
- Quando
s.length() for 15, a expressão 15 < 15 será falsa. - O bloco dentro do
if não será executado. - A função retorna imediatamente, encerrando a execução sem novos chamados recursivos.
Por que a Alternativa E é a correta?
A pergunta pergunta "Quando é que esse método terminará?". A resposta deve descrever a condição exata sob a qual a execução cessa.
| Opção | Análise | Veredito |
|---|
| a | Embora termine para a maioria das entradas, esta opção é genérica e não explica o mecanismo de parada. | Incorreta (menos precisa) |
| b | Esta é a condição para a recursão continuar, não terminar. | Incorreta |
| c | Strings nulas podem causar erros, mas não são o critério lógico de parada deste algoritmo. | Incorreta |
| d | O método possui um caso base definido, então ele termina sim. | Incorreta |
| e | Descreve exatamente o estado da string quando a condição if falha e a função retorna. | Correta |
Portanto, a função garante que a recursão pare quando o comprimento da string ultrapassar o limite definido na verificação.
Alternativa E.