Задача к ЕГЭ по информатике на тему «одна функция» №4

Алгоритм вычисления значения f(n)  , где n  — целое неотрицательное число, задан следующими соотношениями:

f(n) = 1  , при n = 0  или n = 1

f(n) = f (n − 1)∗n,  иначе

Найдите чему равно значение f(2)   f(3)       f(10000) ----+  ----+ ...+ -------- f(1)   f(2)       f(9999)

Решение руками

Что такое -f-(i)--? f(i− 1)  Это есть просто число i  . А значит, нужно найти сумму чисел от 2 до 10000 включительно.

Решение программой

from functools import lru_cache # импортируем кэширование для того чтобы ускорить выполнение программы за счёт того,
# что программа будет запоминать промежуточные значения функции, а не высчитывать их вновь при подсчитывании значения функции

@lru_cache(None) # применяем кэширование для функции
def f(n): # объявляем функцию
    if n == 0 or n == 1: # если n равно 0 или 1
        return 1 # возвращаем 1
    else: # в ином случае
        return f(n-1) * n
sm = 0 # переменная для подсчёта суммы выражения
for i in range(2,10001):
    sm += f(i)//f(i-1)
print(sm) # вывод ответа

Ответ: 50004999
Оцените статью
Я решу все!