我应该如何将以下内容转换为递归函数,以便输出也是[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)
答案 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)