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

Python递归难题:实现生成平方数列表的递归函数

解决Python递归平方列表问题

嘿,我来帮你理顺这个递归函数的思路!你现在的问题核心是终止条件的返回值类型不对,以及没搞清楚递归步骤里如何拼接结果,咱们一步步来:

第一步:修正终止条件

你原本设定n==1时返回1,但咱们的目标是返回列表,所以这里应该返回[1]——这样后续递归调用返回的结果都是列表,才能顺利拼接。

第二步:理解递归逻辑

递归的关键是把问题拆解成更小的子问题:

  • 要得到包含n个元素的平方列表,我们可以先得到包含n-1个元素的平方列表(也就是square_list(n-1)的结果)
  • 然后把第n个元素(也就是n²)添加到这个子列表的末尾,就得到了最终的n元素列表

完整代码示例

def square_list(n):
    # 终止条件:n=1时返回只包含1的列表
    if n == 1:
        return [1]
    # 递归步骤:子问题结果 + 当前元素的平方
    else:
        return square_list(n-1) + [n**2]

举个例子验证

比如当n=4时:

  1. square_list(4)调用square_list(3),得到[1,4,9]
  2. 把4²=16作为列表[16]拼接到后面,最终返回[1,4,9,16],完全符合你的需求!

为什么原来的终止条件会出错?

如果n=1返回的是整数1,那当调用square_list(2)时,就会尝试做1 + [4]——整数和列表是不同类型,直接相加会触发TypeError,所以必须保证所有递归分支返回的都是列表类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:56:48