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

Python递归函数学习:列表反转递归实现无法返回out值问题

问题原因

代码运行无输出、返回值异常是三个逻辑错误共同导致的:

  • 递归链路缺少返回传递:非终止分支中仅调用了recFn(ctr+1, out),没有对递归调用结果加return。只有最内层触发终止条件的递归层会返回计算后的out,上层递归拿到内层返回值后直接丢弃,结果根本传不到最外层调用处。
  • 递归终止条件漏处理元素:当前逻辑在ctr == len(inp)-1时就直接返回out,但列表最后一个元素(示例中的102)还没被拼入结果列表,就算返回链路通畅,输出结果也会缺失元素。
  • 最外层未处理函数返回值:全局作用域执行recFn(0, out)后,既没有变量接收返回结果,也没有打印逻辑,就算函数正确算出了结果,控制台也不会有任何输出。
修正后代码
# 使用递归实现列表反转
# 示例输入 [1,'yes', 8, 'pipe', 102] 预期输出 [102, 'pipe', 8, 'yes', 1]
inp = [1,'yes', 8, 'pipe', 102]

def recFn(ctr, out):
    # 遍历完所有索引时终止,返回最终结果
    if ctr == len(inp):
        return out
    out = [inp[ctr]] + out
    # 逐层返回递归计算结果
    return recFn(ctr + 1, out)

# 接收返回值并打印
res = recFn(0, [])
print(res)

运行上述代码即可得到预期的反转列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:54:27