使用Python计算阶乘

时间:2015-02-21 00:07:30

标签: python

编辑:我知道我可以导入阶乘,但我这样做是为了练习

尝试使用Python中的函数获取给定数字的因子。

例如: factorial(4)= 4 * 3 * 2 * 1 = 24

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

4 个答案:

答案 0 :(得分:4)

尝试这样:使代码正常工作

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

你对评论提出了很多建议

答案 1 :(得分:1)

接近这个的好方法是使用函数调用自身的递归。见Function for Factorial in Python

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

但是在你的情况下,你的return语句实际上会脱离while循环。因此,如果你传球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)

答案 2 :(得分:0)

我提出了一个更短的递归因子计算代码。不确定它是否比其他方法更快或更慢:

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

fac(10)
3628800

答案 3 :(得分:0)

_start