Questão de Algoritmos e Estrutura de Dados — Algoritmos — UFSC 2019
Algoritmos e Estrutura de Dados›Algoritmos
Código
qq561465
Banca
UFSC
Órgão
UFSC
Ano
2019
Nível
Médio
Cargo
Técnico de Tecnologia da Informação
A respeito de um algoritmo recursivo, analise as afirmativas abaixo e assinale a alternativa correta.I. Deve conter pelo menos uma estrutura de repetição.II. Deve conter pelo menos uma estrutura de seleção.III. Deve invocar a si mesmo pelo menos uma vez ao ser executado.
ATodas as afirmativas estão corretas.
BSomente a afirmativa II está correta.
CSomente as afirmativas I e II estão corretas.
DSomente a afirmativa I está correta.
ESomente as afirmativas II e III estão corretas.
Revelar gabarito e comentário▾
GabaritoB — Somente a afirmativa II está correta.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Algoritmos recursivos
Gabarito: letra B — apenas a afirmativa II está correta. Um algoritmo recursivo pode (e deve) conter uma estrutura de seleção para distinguir o caso base do caso recursivo, mas não exige estruturas de repetição (a recursão já repete) e nem sempre invoca a si mesmo em toda execução (o caso base encerra sem auto-chamada).
A banca testa o entendimento do que é indispensável em uma função recursiva.
Algoritmo recursivo
1Estruturas obrigatórias
Seleção (caso base vs. recursivo)
Repetição (não exige laço)
2Auto-chamada
Caso base → [-] não invoca a si mesmo
Caso recursivo → [+] invoca a si mesmo
LEVEL · soulevel.com.br
Item I — ❌ Incorreto
Afirma que "deve conter pelo menos uma estrutura de repetição". Isso é falso. A recursão é um mecanismo de repetição por si só: a função se chama repetidamente até atingir o caso base. Laços explícitos (for, while) não são obrigatórios — embora possam coexistir, não são requisito.
Item II — ✅ Correto
"Deve conter pelo menos uma estrutura de seleção." Correto. Toda função recursiva precisa de uma condição que decide se o problema já é trivial (caso base) ou se deve continuar a recursão (caso recursivo). Essa decisão é implementada com if-else ou switch.
Item III — ❌ Incorreto
"Deve invocar a si mesmo pelo menos uma vez ao ser executado." Nem sempre. Quando a entrada já corresponde ao caso base, a função retorna imediatamente sem realizar nenhuma chamada recursiva. Exemplo: fatorial(0) retorna 1 sem chamar fatorial(-1). Portanto, a execução pode ocorrer sem auto-chamada.
NÃO CAIA NESSA!
O candidato pode achar que toda execução de uma função recursiva aciona uma nova chamada. Mas o caso base existe justamente para interromper a recursão — nele não há auto-invocação. A afirmativa III exige que em toda execução ocorra ao menos uma auto-chamada, o que não é verdade.
Conclusão: Apenas a afirmativa II está correta. Logo, a alternativa correta é a letra B.