2015-02-21 2 views
-1

EDIT: Я знаю, что могу импортировать факториала, но я делаю это упражнениеВычисление факториалов с Python

Попытка получить коэффициент заданного числа с функцией в Python.

Например: факториал (4) = 4 * 3 * 2 * 1 = 24

def factorial(x): 
    n = x 
    while n >= 0: 
     x = n * (n - 1) 
     n -= 1 
    return x 
+4

'из математики импорта factorial' сделано –

+0

Ха-ха, я должен был знать, что собирался сказать. Я хотел сказать, что я пытаюсь сделать свои собственные математические функции так же, как упражнения. –

+1

Факториал - хороший кандидат на рекурсию. Вы пробовали это? – MarkG

ответ

4

попробовать так: чтобы сделать ваш код работать

def factorial(x): 
    n = 1 # this will store the factorial value 
    while x > 0: 
     n = n*x 
     x -= 1 
    return n 

вы получили много советов по Комментарии следовать за ним

+0

приятнее, чем я: P (хороший ответ +1) –

+0

Благодарим вас за использование моего существующего кода, чтобы это стало понятным. Я ценю всех остальных в комментариях, которые ставят их ответ, очень полезно видеть другие способы сделать это. –

+1

приятно видеть u @JoranBeasley – Hackaholic

1

Хорошим способом приблизиться к этому будет использование рекурсии, где функция вызывает себя. См Function for Factorial in Python

def factorial(n): 
    if n == 0: 
     return 1 
    else: 
     return n * factorial(n-1) 

Но в вашем случае, если ваш оператор возврата фактически распадается из цикла. Итак, если вы пройдете в 5, вы получите 20 обратно, что, очевидно, не 5! (5 факториалов).

Вместо этого, попробуйте следующее:

def factorial(x): 
    n = 1 
    while x > 1: 
     n *= x 
     x -= 1 
    return n 

print (factorial(5)) 

Но есть идти на рекурсивном подходе.

Если вы действительно хотите обмануть попробовать:

import math 
math.factorial(n) 
0

Представляю еще более короткий код для рекурсивного факторного расчета. Не уверен, если это быстрее или медленнее, чем другие подходы:

def fac(n): 
    return 1 if n==1 else n*fac(n-1) 

fac(10) 
3628800 
Смежные вопросы