我尝试通过将其创建为for或while循环来转换此函数,但遇到了麻烦。
def fact(n):
if n<= 1:
return 1
else:
return (n)*(fact(n-1))
这就是我的尝试:
def fact(n):
while n <= 1:
return 1
else:
return (n)*(fact(n-1))
答案 0 :(得分:2)
将上述递归程序转换为使用循环并不像将if
更改为while
那么简单。
def fact(n):
result = 1
while n >= 1:
result = result * n
n = n - 1
return result
答案 1 :(得分:1)
如果您正在使用循环,则不应该递归,您应该在循环内相乘。
def fact(n):
result = 1
while n > 1:
result *= n
n = n - 1
return result
答案 2 :(得分:0)
使用for循环:
result = 1
for v in xrange(1, n + 1):
result *= v
return result
使用理解:
from operator import mul
return reduce(mul, xrange(1, n + 1), 1)