Python中的Factorial使用while

Python中的Factorial使用while,python,factorial,Python,Factorial,为什么这个函数不能作为阶乘函数工作 def Factor(n): while n>=1: print n*(n-1) return 1 您永远不会将n的值更改为传递到函数中的值以外的任何值 我不认为这会像你认为的那样。看起来您混合了递归和迭代。首先,您的代码都不会更改n的值,因此循环将无限期运行,除非调用函数时n==1 其次,您没有在循环提示中累积部分积:在循环集合result=之前,然后在循环内将result的当前值乘以n 最后,您应该返回累积的结果,而

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

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

您永远不会将n的值更改为传递到函数中的值以外的任何值


我不认为这会像你认为的那样。看起来您混合了递归和迭代。

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

其次,您没有在循环提示中累积部分积:在循环集合result=之前,然后在循环内将result的当前值乘以n

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

这将起作用

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

递归和迭代是混合的。看看这两个:

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)
def factorialnum:

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

因为n不变,所以打印factorial5

?并且仍然>=1?并且无论发生什么情况,它都将返回1。。。也就是说,如果它返回SSO,它确实作为阶乘函数工作,但只计算1!。它甚至不这样做。@xnx但它应该适用于0