为什么这个函数不能作为阶乘函数?
def Factor(n):
while n>=1:
print n*(n-1)
return 1
答案 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)