Com relação à informática aplicada à estatística, julgue o i...
Com relação à informática aplicada à estatística, julgue o item a seguir.
O código em Python a seguir está correto quanto à aplicação da técnica de recursão.
def f(x):
f(x – 1)
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E (Errado)
1. Tema central:
A questão avalia seu conhecimento sobre recursão em programação, especificamente em Python. Entender como funções recursivas funcionam é importante tanto para lógica de programação quanto para resolver problemas estatísticos em informática.
2. Resumo teórico:
Recursão ocorre quando uma função chama a si mesma para resolver um problema menor do original. Para funcionar corretamente, toda função recursiva deve ter pelo menos dois elementos:
- Condição de parada (ou “caso base”): evita chamadas infinitas e encerra a recursão.
- Chamada recursiva: a função se chama com um argumento diferente, aproximando-se do caso base.
Segundo o Python Documentation (docs.python.org), sem um caso base, a recursão nunca termina e ocorre erro de estouro de pilha (RecursionError).
3. Justificativa da alternativa correta:
O código apresentado é:
def f(x):
f(x - 1)
Observe que não existe condição de parada. Isso significa que, independentemente do valor de x, a função chamará a si própria infinitamente, causando erro.
Portanto, o código está INCORRETO quanto à aplicação da técnica de recursão, pois falta o caso base essencial para que o algoritmo funcione adequadamente.
4. Estratégia de resolução:
Sempre que encontrar questões sobre recursão, verifique se há uma condição que faz a função parar. Se faltar, a recursão está mal implementada.
5. Pegadinhas comuns:
Muitos concursos testam se você observa detalhes como caso base. Não se deixe enganar apenas pela chamada recursiva! O correto é ter a seguinte estrutura:
def f(x):
if x == 0:
return 1
else:
return f(x - 1)
Resumo: A alternativa está ERRADA, pois o código não apresenta a estrutura mínima exigida para recursão correta em Python.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
O código apresentado usa recursão, mas está incorreto na aplicação, porque falta a condição de parada, isso causa recursão infinita, resultando em erro de “maximum recursion depth exceeded” em Python.
Por exemplo:
def f(x):
if x <= 0:
return
f(x - 1)
Aqui há uma condição de parada (if x <= 0: return), garantindo que a função pare de chamar a si mesma.
E
Como seria o correto:
- def f(x):
- if x <= 0:
- return
- f(x - 1)
Agora sim: recursão com condição de parada. A função se autochama até (X) chegar a 0 ou menos, e então para.
- Sim, a ideia era recursiva.
- Não, o código não está correto, pois falta a condição de parada.
Gabarito: Errado
Do jeito que está vai entrar em um loop infinito, pois sempre que chamar passando um valor ele vai realizar uma nova chamada valor-1.
questão mal feita
def f(x):
f(x – 1)
def f(x): Aqui estamos definindo uma função chamada f que recebe um argumento x.
f(x - 1): Dentro da função f, estamos chamando a própria função f, passando x - 1 como argumento. Isso é conhecido como uma chamada recursiva, onde a função chama a si mesma.
- A função f é chamada com um argumento x.
- Dentro da função, ela chama a si mesma com f(x - 1).
- Isso cria uma nova chamada da função f com um argumento x diminuído em 1.
- Esse processo se repete indefinidamente, pois a função não possui uma condição de parada para interromper a recursão.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo