使用while的Python中的因子

时间:2014-12-16 16:07:16

标签: python factorial

为什么这个函数不能作为阶乘函数?

def Factor(n):
    while n>=1:
        print n*(n-1)
    return 1

5 个答案:

答案 0 :(得分:1)

这将有效

def Factor(n):
    val=1
    while n>=1:
        val = val * n
        n = n-1
    return  val

答案 1 :(得分:1)

你有递归和迭代混合。看看这两个:

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

def factor_iteration_for(n):
    factor = 1
    for i in range(n):
        factor *= i+1
    return factor

def factor_iteration_while(n):
    factor = 1
    while n >= 1:
        factor *= n
        n -= 1
    return factor

print factor_iteration_for(4)
print factor_iteration_while(4)
print factor_recursion(4)

答案 2 :(得分:0)

您永远不会将n的值更改为传递给函数的内容。

我认为这不会做你认为会做的事情。看起来你已经混合了递归和迭代。

答案 3 :(得分:0)

首先,您的代码都没有更改n的值,因此在调用函数时,循环将无限期地运行,除非n == 1

其次,您不会在循环中累积部分产品(提示:在循环集result =之前),然后在其内部将result的当前值乘以{{的值1}}。

最后,您应该返回累积的结果而不是一个。

答案 4 :(得分:0)

def factorial(num):

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

print factorial(5)