Alternativa C - Para nenhuma string
A questão apresenta um método recursivo com uma lógica de controle de fluxo que resulta em recursão infinita. Para entender por que ele nunca termina sem erro, precisamos analisar a estrutura sintática do código apresentado.
Análise da Estrutura do Código:
- Comando
if sem chaves {}:
Em linguagens como C++, Java ou C#, quando não utilizamos chaves para delimitar o bloco de um comando condicional (if), apenas a linha imediatamente seguinte pertence a esse comando.
No código da imagem:
if (s.length() < 15) // Linha 3
cout << s << endl; // Linha 4 (dentro do IF)
stringRecur(s + "*"); // Linha 5 (fora do IF)
A linha 5 está alinhada horizontalmente com a linha 3, confirmando que ela não está condicionada ao if.
- Chamada Recursiva Incondicional:
A instrução stringRecur(s + "*"); é executada em todas as chamadas, independentemente do tamanho da string. Isso significa que mesmo quando o comprimento da string atingir ou ultrapassar 15 caracteres, o método continuará chamando a si mesmo. - Crescimento Infinito:
A cada chamada recursiva, um caractere asterisco () é adicionado à string (s + ""). O tamanho da string aumenta indefinidamente (n \rightarrow n+1 \rightarrow n+2 \dots).
Resultado Final:
Como não existe uma condição de parada (caso base) que impeça a chamada recursiva, o método ocupará toda a memória da pilha de execução (Stack Overflow) até travar o programa. Portanto, ele nunca terminará com sucesso.
Resumo das Alternativas
| Opção | Análise | Status |
|---|
| a. Quando o comprimento \geq 15 | Incorreto. O método continua executando além desse ponto. | ❌ |
| b. Com todas as strings... | Incorreto. Nenhuma string permite a terminação segura. | ❌ |
| c. Para nenhuma string | Correto. A recursão é infinita e causará erro. | ✅ |
| d. Quando o comprimento < 15 | Incorreto. É a fase onde ele imprime, mas não termina. | ❌ |
| e. Quando a string for nula | Incorreto. Não há verificação de nulidade e gera erro lógico. | ❌ |
Portanto, devido à ausência de uma cláusula de retorno ou de bloqueio na recursão, o método falhará sempre.