You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将生成累加和列表的factorials函数改写为递归实现?

递归实现累加和列表的方法

首先明确递归的核心逻辑:要生成1到x的累加和列表,我们可以先递归生成1到x-1的累加和列表,再把1到x的累加和(也就是sum(x)的结果)加到这个列表的末尾。递归的终止条件很简单——当x=1时,直接返回只包含sum(1)的列表[1]。

先确认你已经有可用的sum(x)函数,比如:

def sum(x):
    # 计算1到x的累加和
    return x * (x + 1) // 2

接下来是两种递归实现的写法:

写法一:基于列表追加

def factorials(x):
    # 终止条件:x=1时返回基础列表
    if x == 1:
        return [sum(1)]
    # 先递归获取前x-1项的列表
    previous_list = factorials(x - 1)
    # 把当前x对应的累加和追加到列表末尾
    previous_list.append(sum(x))
    return previous_list

写法二:基于列表拼接(更简洁)

def factorials(x):
    if x == 1:
        return [1]
    # 直接把递归得到的子列表和当前项的列表拼接
    return factorials(x - 1) + [sum(x)]

调用factorials(10)就能得到你要的结果:[1, 3, 6, 10, 15, 21, 28, 36, 45, 55]。

本质上递归是把大问题拆成小问题解决,不需要在递归过程中维护全局列表,每次递归调用都会返回对应子问题的完整结果,我们只需要把当前项的结果和子问题结果组合起来就行。

内容的提问来源于stack exchange,提问作者Enrique Ferreira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:52:06