Faça um programa que leia um valor
inteiro e positivo. Calcule e mostre o valor de
, conforme a fórmula a seguir:
Passo 1
O enunciado pede que a gente leia um valor inteiro e positivo
e calcule o valor de
dado pela fórmula abaixo:
Perguntas claras:
- Qual é a entrada? Um inteiro positivo
. - O que precisamos devolver? O valor numérico de
calculado pela fórmula acima.
Informações relevantes que o enunciado dá:
- A soma no denominador começa em
e termina em . - Cada termo do denominador é
para .
Passo 2
Entendendo o que é fatorial (porque a fórmula usa
):
- Definição: para
inteiro,
- Por convenção,
.
Exemplo concreto:.
Isso significa que, por exemplo,.
Passo 3
Reescrevendo a parte essencial em notação de soma para ficar mais clara: defina
Então o valor pedido é
Observação: para qualquer
temos
, logo a expressão
é bem definida.
Passo 4
Como calcular na prática (estratégia que dá certo em prova e em programa):
- Calcular
diretamente do zero em cada termo é custoso; em vez disso, mantenha uma variável que guarde o fatorial acumulado. - Comece com
. Para cada de até faça ; então será exatamente . Some ao acumulador do somatório . - Essa estratégia é O(
) em tempo e O(1) em memória e evita recalcular fatoriais do começo a cada iteração.
Passo 5
Explicando passo a passo o algoritmo que você vai implementar (pseudocódigo comentado):
- Leia
(inteiro positivo). - Inicialize
(usar tipo ponto-flutuante para segurança) e . - Para
de até : -
(agora ) -
-
- Ao final calcule
. - Imprima
com precisão adequada (por exemplo, 6 casas decimais ou conforme exige o enunciado/avaliador).
Passo 6
Exemplo numérico para fixar:
- Tome
. - Iterações:
-
: , soma . -
: , soma . -
: , soma .
-
- Então
.
Isso casa com o cálculo manual que fizemos antes — bom sinal.
Passo 7
Cuidados numéricos e limites práticos:
- Para
muito grande, os termos tornam-se muito pequenos rapidamente (fatorial cresce rápido), então a soma converge; em ponto-flutuante, após certo adicionar termos menores que a precisão não muda . Normalmente, para razoáveis (por ex. até algumas dezenas) a abordagem acima é segura. - Use tipo de ponto-flutuante (em Python: float; em C: double) para acumular
e .
Passo 8
Implementação (programa em Python). O programa lê um inteiro
da entrada padrão, calcula
seguindo o algoritmo explicado e imprime
com 6 casas decimais. Você pode adaptar o formato de saída se o enunciado pedir outra precisão.
Resposta
# Programa em Python para calcular E = 1 + 1/(1/1! + 1/2! + ... + 1/N!)
N = int(input().strip())
fact = 1.0
S = 0.0
for k in range(1, N+1):
fact *= k # fact passa a ser k!
S += 1.0 / fact # adiciona 1/k! ao somatório
E = 1.0 + 1.0 / S
print("{:.6f}".format(E))