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

如何将Python列表奇偶重排的现有代码修改为递归函数?

递归实现思路及代码

迭代改递归的核心是把「循环遍历全量元素」拆解为「每次处理单个元素 + 递归处理剩余元素」的模式,针对你的需求实现如下:

完整递归代码

def evenorodd_recursive(s):
    # 递归终止条件:列表为空时直接返回空结果
    if not s:
        return []
    # 取出当前待处理的第一个元素
    current = s[0]
    # 递归处理剩下的所有元素,得到剩余元素的排序结果
    rest_result = evenorodd_recursive(s[1:])
    # 偶数放结果前部,奇数放结果末尾
    if current % 2 == 0:
        return [current] + rest_result
    else:
        return rest_result + [current]

# 测试输出和原迭代版本完全一致
print(evenorodd_recursive([1,2,3,4,5,6,7,8]))

逻辑对应说明

和你现有的迭代版本逻辑完全等价:

  • 原有迭代版的for循环遍历所有元素,对应递归版每次取第一个元素、不断拆分调用处理剩余列表的过程
  • 原有迭代版的evens.append操作,对应递归版将偶数放在返回列表头部的逻辑
  • 原有迭代版最后合并evens + odds,对应递归版将奇数放在返回列表尾部的逻辑
  • 两种写法的输出完全一致,都满足偶数在前、奇数在后的需求,且偶数、奇数各自的相对顺序和原列表的出现顺序一致。

注意:Python默认递归深度限制在1000左右,如果需要处理的列表长度超过这个阈值,递归版本会触发栈溢出错误,生产环境下优先使用你原来的迭代版本更稳定,递归版本更适合用来理解递归思想。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:06:08