Com relação à informática aplicada à estatística, julgue o i...

Próximas questões
Com base no mesmo assunto
Q3257799 Programação

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)

Alternativas

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