===== Условие ===== Алгоритм вычисления значения функции $F(n)$, где $n \in N$, задан следующими соотношениями: $F(n) = n!$, если $n \ge 5000$, $F(n) = 2 · F(n + 1) / (n + 1)$, если $1 \le n \le 5000$. Чему равно значение выражения $1000 \cdot F(7) / F(4)$? Примечание. Факториал числа $n$, который обозначается как $n!$, вычисляется по формуле $n!=1·2·…·n$. ===== Решение ===== Сразу видим, что данная рекурсивная функция вычисляться "в лоб" на компьютере не будет, даже на python, где целое число может иметь большую длину. Рассмотрим $n = 4999$ В этом случае функция будет вычисляться так: $F(4999) = 2\cdot \frac{F(5000)}{5000}$ Мы помним, что $F(5000) = 5000!$ Поэтому $F(4999) = 2\cdot \frac{5000!}{5000}$ Теперь пусть $n=4998$ $F(4998) = 2\cdot \frac{F(4999)}{4999} = 2\cdot \frac{2\cdot \frac{5000!}{5000}}{4999} = 2\cdot 2\cdot \frac{5000!}{4999\cdot 5000}$ Теперь пусть $n=4997$ $F(4997) = 2^3 \cdot \frac{5000!}{4998 \cdot 4999\cdot 5000}$ Можем вывести теперь формулу для произвольного $n<5000$. $F(n) = 2^{5000-n}n!$ Теперь можем посчитать ответ: $1000 \cdot F(7) / F(4) = 1000\cdot\frac{2^{5000-7}7!}{2^{5000-4}4!} = 1000\cdot 5\cdot 6\cdot 7/8 = 26250$