对于给定的数字x,我想返回一个列表,它包含了python中所有数字的阶乘,例如:如果n= 5,那么如果n= 5,那么我希望返回1,2,6,24,120,如果python 5,那么我希望返回1,2,6,24,120,720我的循环必须在递归函数中。基本上我想要一个递归函数返回一个列表?
发布于 2021-10-10 01:18:25
对于递归函数,除非有分支逻辑,否则不会循环。您只需从基本情况开始。这里,这是阶乘(1)(或者可能是零)。这应该会返回一个简单的列表,而不需要进行更多的递归。然后,下一个fact(2)
将调用fact(1)
并附加其新值。然后对于fact(n)
,它将调用fact(n-1)
...
def fact(n):
if n <= 1:
return [1]
last = fact(n-1)
return last + [n * last[-1]]
fact(6)
# [1, 2, 6, 24, 120, 720]
发布于 2021-10-10 02:54:37
您可以使用默认参数通过将计数器向下传递到较低的递归级别来缩短函数:
def fact(n,k=2,f=1): return [f] + fact(n-1,k+1,k*f) if n else []
print(fact(5))
[1, 2, 6, 24, 120]
这里,n
仅用作递减计数器来控制递归深度,k
是下一个因子,f
是要添加到结果列表中的当前阶乘值。
https://stackoverflow.com/questions/69511537
复制相似问题