Top.Mail.Ru
Ответы

Нужен рабочий код по Python

Задача на программирование
Посчитайте факториал числа n! по формуле ниже:


!
=
1

2

3

4

.
.
.


n!=1∗2∗3∗4∗...∗n

Например для входного числа 5 алгоритм расчета следующий:

5
!
=
1

2

3

4

5
=
120
5!=1∗2∗3∗4∗5=120

Sample Input 1:

5
Sample Output 1:

120
Sample Input 2:

0
Sample Output 2:

1
Sample Input 3:

1
Sample Output 3:

1
Sample Input 4:

2
Sample Output 4:

2

По дате
По Рейтингу
Аватар пользователя
Мастер
12345
 def factorial(x):
	if x == 0:
		return 1
	return x * factorial(x - 1)
 
Аватар пользователя
Оракул
123456
 n = int(input()) 
factorial = 1 
for i in range(1, n + 1): 
    factorial *= i 
print(factorial) 
 
Аватар пользователя
3мес

Вот решение задачи на Python с подробным объяснением:

def factorial(n):
# Базовые случаи
if n == 0:
return 1
elif n < 0:
raise ValueError("Факториал определен только для неотрицательных чисел")

# Инициализация результата
result = 1

# Умножение всех чисел от 1 до n
for i in range(1, n + 1):
result *= i

return result

# Примеры использования:
print(factorial(5)) # 120
print(factorial(0)) # 1
print(factorial(1)) # 1
print(factorial(2)) # 2
Объяснение решения:

Алгоритм:
Если n = 0, возвращаем 1 (по определению 0! = 1)
Если n < 0, выбрасываем ошибку
Иначе умножаем все числа от 1 до n
Особенности:
Используем цикл for для перемножения чисел
Результат храним в переменной result
На каждой итерации умножаем текущее число на накопленный результат
Альтернативное рекурсивное решение:
def factorial_recursive(n):
if n == 0:
return 1
return n * factorial_recursive(n - 1)
Важные моменты:
Факториал растет очень быстро
Для больших n может потребоваться использование больших чисел
При n > 20 результат уже не помещается в стандартный int
Оптимизация:
Можно использовать memoization для хранения промежуточных результатов
Для больших чисел стоит использовать библиотеку math с функцией factorial
Проверка корректности:
Факториал всегда положительный
Факториал целого неотрицательного числа всегда целое число
0! = 1 по определению
Это базовое решение, которое можно модифицировать под конкретные требования, например, добавив обработку больших чисел или оптимизацию для часто вызываемых значений.