Questão 1 (Média): Qual a definição correta de recursão em programação?
Resposta correta: C) Uma função definida em termos de si mesma, direta ou indiretamente.
Explicação: Recursão ocorre quando a função chama a si mesma (direta ou indiretamente). É essencial ter um caso base para terminar a recursão e garantir que cada chamada reduza o problema.
Questão 2 (Difícil): Quais são os três elementos básicos para definir um problema de forma recursiva?
Resposta correta: C) Caso base, progressão, e a garantia de que cada chamada aproxima o término.
Explicação: Um problema recursivo deve ter um caso base (terminação) e uma progressão que reduza o tamanho do problema a cada chamada para chegar ao caso base.
Questão 3 (Difícil): No exemplo do fatorial, qual é a condição básica e a definição recursiva?
Resposta correta: A) Base: F(0) = 1; Recursão: F(n) = n × F(n-1).
Explicação: Para o fatorial, o caso base é n = 0 (retorna 1). A definição recursiva usa F(n) = n × F(n-1), reduzindo n a cada chamada até chegar ao caso base.
Questão 4 (Extrema): Quais técnicas ajudam a otimizar a recursão quando necessário?
Resposta correta: A) Memoização, transformação em laço, tail recursion.
Explicação: Otimizações comuns incluem memorização (cache de resultados), converter recursão em laço quando possível, e explorar recursão de cauda (tail recursion) que pode ser otimizada por alguns compiladores/interpretações.