将以下内容转换为递归函数

时间:2017-12-30 08:01:35

标签: python recursion

我应该如何将以下内容转换为递归函数,以便输出也是[1,2,6,24,120]?

def factorial(n):
    l = []
    value = 1
    for x in range(1, n+1):
        value = value * x
        l.append(value)
    print(l)


factorial(5)

以下是我的递归代码。我不确定如何在函数中使用append来创建列表,有什么建议吗?

def factorial(n):
    if n == 1:
        L.append(1)
        return 1
    else:
        return n * factorial(n-1)


x = int(input("Enter value of n: "))
L = []

print(factorial(x))
print(L)

3 个答案:

答案 0 :(得分:1)

这是一个经典的递归,只是我们将新值附加到list a中:

def factorial(n):

    if n == 1:
        return [1]

    a = factorial(n-1)
    a.append(n*a[-1])
    return a

print(factorial(5))

结果:[1, 2, 6, 24, 120]

答案 1 :(得分:0)

def factorial(n,b):
  if n==1:
    return [1]
  elif len(b)==n:
    return b
  else:
    if len(b)==0:
        b.append(1)
        factorial(n,b)
    else:
        b.append((len(b)+1)*b[len(b)-1])
        factorial(n,b)  
a = []
print f(5,a)

答案 2 :(得分:-2)

def factorial(n):
     if n == 1:
          return 1
     else:
         return n * factorial(n - 1)