首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中,如何从递归函数返回一个列表以获取数字阶乘?

在python中,如何从递归函数返回一个列表以获取数字阶乘?
EN

Stack Overflow用户
提问于 2021-10-10 00:57:29
回答 2查看 58关注 0票数 0

对于给定的数字x,我想返回一个列表,它包含了python中所有数字的阶乘,例如:如果n= 5,那么如果n= 5,那么我希望返回1,2,6,24,120,如果python 5,那么我希望返回1,2,6,24,120,720我的循环必须在递归函数中。基本上我想要一个递归函数返回一个列表?

EN

回答 2

Stack Overflow用户

发布于 2021-10-10 01:18:25

对于递归函数,除非有分支逻辑,否则不会循环。您只需从基本情况开始。这里,这是阶乘(1)(或者可能是零)。这应该会返回一个简单的列表,而不需要进行更多的递归。然后,下一个fact(2)将调用fact(1)并附加其新值。然后对于fact(n),它将调用fact(n-1)...

代码语言:javascript
运行
复制
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]
票数 2
EN

Stack Overflow用户

发布于 2021-10-10 02:54:37

您可以使用默认参数通过将计数器向下传递到较低的递归级别来缩短函数:

代码语言:javascript
运行
复制
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是要添加到结果列表中的当前阶乘值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69511537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档