Привет всем! Пытаюсь разобраться, как найти факториал в Python, но чёт не доходит((. Подскажите разные способы решения, может через рекурсию или циклы, и какой из них лучше. Буду рад любым полезным советам и примерам кода. Заранее спасибо всем!
Привет всем! Пытаюсь разобраться, как найти факториал в Python, но чёт не доходит((. Подскажите разные способы решения, может через рекурсию или циклы, и какой из них лучше. Буду рад любым полезным советам и примерам кода. Заранее спасибо всем!
Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat
А ТАКЖЕ: Канал о Python, статьи и книги ==>> @pythoneer_ru
Привет! Самый простой способ — это использовать рекурсию. Вот пример кода на Python:
Если не нужен рекурсивный кошмар, используй цикл:Программный код:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
print(factorial(5)) # Output: 120
Программный код:
def factorial(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
print(factorial(5)) # Output: 120
Всё понятно и чётко, бро! Лучше, конечно, с циклами, когда числа большие, а то стеки переполняются.Сообщение от Сказка
Есть еще вариант на функциональном стиле, если фишкуешь в таких штуках:
Так сказать, минималистичный подход))Программный код:
import functools
def factorial(n):
return functools.reduce(lambda x, y: x*y, range(1, n+1), 1)
print(factorial(5)) # Output: 120
Ооо, это прям для любителей ламбд и редюсов! Красиво, но кому-то читать тяжело будет.Сообщение от NinaReader
Рекурсия — это, конечно, по красоте, но реально не всегда оптимально, особенно для больших чисел. Так что в продакшене обычно циклы фигачат. Вот пример:
Программный код:
def factorial(n):
if n < 0:
return 'Invalid input, must be non-negative'
result = 1
for i in range(1, n + 1):
result *= i
return result
print(factorial(5)) # Output: 120
print(factorial(-2)) # Output: Invalid input, must be non-negative
Вписал проверку на отрицательные числа — молодец. Таки да, циклы надёжнее.Сообщение от Цикада
В математике факториал — это rass-aж крутая вещь, но Python и так имба. Если не хочешь париться, всегда есть встроенные фишки. Например:
Программный код:
import math
print(math.factorial(5)) # Output: 120
Ага, импортнул, вызвал ф-цию и релаксируй, кайф! Эх, всегда бы так просто все решалось.Сообщение от Констанция