S = 1 + 1/3! +...+ 1/(2*n-1)!
n от 1 до 100
в питоне, используя шаг с циклом.
Не очень понимаю как это возможно написать:)
Asked
Active
Viewed 594 times
1
Семён
- 141
-
1Немного - это насколько? 20%, 0%? :) – vikttur_Stop_RU_war_in_UA Dec 22 '17 at 19:54
-
Используя цикл с шагом – Семён Dec 22 '17 at 19:54
-
1Понимаю как вычислить без дробей) – Семён Dec 22 '17 at 19:54
-
Можно привести к общему знаменателю, а числитель посчитать без дробей :3 – Dec 22 '17 at 20:01
2 Answers
2
Это же совсем просто. Если конечно считать в лоб. Но уже при n > 9 результат не меняется. По хорошему, нужно считать другими способами, с частными сумами, но это уже на собеседование в Яндекс спрашивают
s = 1
f = 1;
for n in range(2,100+1):
f = f*(2*n-2)*(2*n-1)
s = s+ 1/f
print (s)
почему там +1 в цикле - это домашнее задание.
KoVadim
- 112,121
- 6
- 94
- 160
0
Попробуйте так:
from operator import mul
from functools import reduce
def factorial(n):
return reduce(mul, [x for x in range(1,n+1)] ) if n>0 else 1
s=sum([ 1/factorial(2*n-1) for n in range(1,101) ])
print(s)
а если надо больше точных знаков - используйте модуль decimal =D
jfs
- 52,361
Vasyl Kolomiets
- 4,090
-
1можно
math.factorialиспользовать. 2-sum(1/n!)для float быстро теряет точность. К примеру: Найти частичную сумму знакопеременного ряда с факториалом: sum (-1)^k (k + 1) / k!, k=0..n – jfs Dec 22 '17 at 22:50 -
1
-