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