Um desenvolvedor de software escreveu o programa a seguir, ...

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

Um desenvolvedor de software escreveu o programa a seguir, usando Python:


def funcao (X):

       if (X==1): return (1)

      else: return ( X + funcao (X-2) )


X = int ( input (‘Valor X = ’) )

print (‘ Resultado = ‘, funcao (X) )



Caso seja passado como valor de X o número 27, o resultado apresentado será:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: B - 196

Para resolver essa questão, precisamos entender o conceito de função recursiva, que é uma função que chama a si mesma durante sua execução. No código apresentado, a função funcao é chamada recursivamente com o argumento X sendo decrementado em 2 a cada chamada, até que a condição base X == 1 seja atendida, momento no qual a função retorna 1 e interrompe as chamadas recursivas.

Quando o valor 27 é passado para a função, ela executa a seguinte sequência de chamadas:

  • funcao(27): Como 27 é diferente de 1, a função chama funcao(25) e aguarda o resultado para somar com 27.
  • funcao(25): Similarmente, chama funcao(23) e aguarda o resultado para somar com 25.
  • funcao(23): Continua o processo chamando funcao(21), e assim por diante...
  • Esse processo se repete, diminuindo o valor de X por 2 até que atinja 1.

Como estamos lidando com um número ímpar, todas as chamadas subsequentes também serão com números ímpares, eventualmente chegando ao número 1. Somando todos os números ímpares de 27 até 1, obtemos o resultado da recursão. Vamos ver a sequência numérica:

27 + 25 + 23 + 21 + 19 + 17 + 15 + 13 + 11 + 9 + 7 + 5 + 3 + 1 = 196

Portanto, a resposta correta é a Alternativa B, que indica o valor 196. A soma desses números ímpares sequenciais é um padrão típico em questões de recursividade que envolvem decrementos fixos e uma condição de parada clara.

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

Gabarito B.

for i in range(27,0,-2)

total += i;

A questão utiliza recursividade para diminuir o parâmetro dela até chegar a condição X == 1, a partir daí ela vai começar uma cadeia de somas onde cada termo vai se somar.

O joão falou sobre:

for i in range(27,0,-2):

total += i;

Por que se vocês notarem com mais atenção é a mesma coisa. range(27,0,-2) vai do íncide 27 até o índice 1, pois o range é exclusivo, de -2 de passo, portanto chegando até o 1. A sacada dessa questão é que por trás dessa recursividade toda o código só faz uma soma dos valores de 27 até o 1 de 2 em 2

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo