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

如何用Python递归实现奇数在前、偶数在后的列表复制?

递归实现奇偶分拆列表的问题拆解与代码补全

问题拆解成这几个小模块:

  • 终止条件处理:当输入列表为空时,直接返回空列表(你已经写好这部分了)。
  • 单个元素判断:检查列表的第一个元素是奇数还是偶数。
  • 递归子问题:对列表除第一个元素外的剩余部分,递归调用当前函数,得到已经分好奇偶的子列表。
  • 结果合并:根据第一个元素的奇偶性,把它放到子问题结果的对应位置——奇数放前面,偶数放后面。

补全后的代码:

def oddsevens(thelist):
    if thelist == []:
        return []
    if thelist[0] % 2 == 0:
        # 偶数:放到递归子列表结果的末尾
        return oddsevens(thelist[1:]) + [thelist[0]]
    else:
        # 奇数:放到递归子列表结果的开头
        return [thelist[0]] + oddsevens(thelist[1:])

验证示例:

输入[3,4,5,6]时,执行流程是:

  1. 第一个元素3是奇数,调用oddsevens([4,5,6])并把3放在结果前面。
  2. 处理[4,5,6],第一个元素4是偶数,调用oddsevens([5,6])并把4放在结果后面。
  3. 处理[5,6],第一个元素5是奇数,调用oddsevens([6])并把5放在前面。
  4. 处理[6],第一个元素6是偶数,调用oddsevens([])得到空列表,把6加到后面,返回[6]。
  5. 回溯合并:[5] + [6] → [5,6];接着[5,6] + [4] → [5,6,4];最后[3] + [5,6,4] → [3,5,6,4],和预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:10:42