转换为for或while循环

时间:2015-04-19 07:51:13

标签: python loops

我尝试通过将其创建为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))

3 个答案:

答案 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)