Python

Программирование на языке Python

Помогите пожалуйста очень срочно
По первой задаче.

1) Тебе задали сделать фигню. Питон - не функциональный язык, в нём нет хвостовых оптимизаций. Рекурсия будет переполнять стек и довольно быстро.

2) Никто не считает факториалы умножением в лоб, это очень долго.

3) Один вопрос - одна задача. Вот твой вопрос уже 7 часов висит, а постил бы по одной задаче - давно получил бы ответы, как другие делают.

Вот реализация факториала с рекурсивными функциями. Функция naivefact (рекурсивная) используется для малых n, factorial - для больших. В оптимизированном вычислении факториала рекурсия используется для вычисления произведения нечётных делителей. Чётные делители (степени 2) собираются в один счётчик, который в конце используется для битового сдвига (быстрого умножения на степень 2 приписыванием двоичных нолей в конец числа).
 # Факториал произведением чисел "в лоб" - годится только для малых n
def naivefact(n): return 1 if n > 1
return l

# Количество единиц в двоичной записи числа
def ones(n):
c = 0
while n != 0: c, n = c + 1, n & (n - 1)
return c

# Рекурсивная функция: произведение нечётных чисел в диапазоне [k, n)
# Вызывает себя для каждой половины диапазона, пока длина диапазона не станет меньше порога
from math import prod
def factorial_partial_product(k, n, maxb):
c = (n - k) // 2
if (c > i
if (v
ИВ
Игорь Владимирович
87 571
Лучший ответ