Python如何实现可返回指定范围阶乘结果列表的递归函数
Python递归生成阶乘列表实现
需求说明
你需要的是完全基于递归实现、返回1到目标值所有阶乘结果的列表,支持两种返回场景:
- x=5时返回1!到5!的结果:
[1, 2, 6, 24, 120] - x=5时返回1!到6!的结果:
[1, 2, 6, 24, 120, 720]
且所有循环逻辑都封装在递归逻辑内部,无额外外部循环。
实现代码
def factorial_list(x, include_extra=False): # 递归终止条件:x=1时返回1!的结果 if x == 1: return [1] # 递归获取前序阶乘列表 pre_list = factorial_list(x-1, include_extra) # 追加当前x的阶乘结果 pre_list.append(pre_list[-1] * x) # 触发额外返回要求时,追加x+1的阶乘结果 if include_extra and len(pre_list) == x: pre_list.append(pre_list[-1] * (x+1)) return pre_list
调用测试
# 场景1:返回1!到5! print(factorial_list(5)) # 输出:[1, 2, 6, 24, 120] # 场景2:返回1!到6! print(factorial_list(5, include_extra=True)) # 输出:[1, 2, 6, 24, 120, 720]
实现说明
整个逻辑没有用到任何外部for/while循环,所有迭代逻辑都通过递归栈实现,完全符合要求。如果你的第二种场景是固定要包含0!(值为1),只需要修改终止条件为x==0时返回[1]即可,调整成本很低。
内容的提问来源于stack exchange,提问作者Ramu
相关产品推荐
相关产品推荐

