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

如何用递归实现Python指定格式列表的打印功能?

递归实现打印指令集

测试用例

calc1 = [['print', 5]] # 预期输出:5
calc2 = [['print', 2], ['print', 4], ['print', 8]] # 预期输出:2 4 8

可正常运行的迭代实现

def exec_program(p):
    if len(p) == 1:
        print(p[0][1])
    else:
        for i in p:
            print(i[1])

exec_program(calc2)
# 输出:
# 2
# 4
# 8

错误的递归尝试

def exec_program(p):
    if len(p) == 1:
        print(p[0][1])
    else:
        print(exec_program[1:] - 1)

正确的递归实现

递归的核心是拆解问题:每次处理指令集的第一个元素,再递归处理剩余元素,直到指令集为空。

实现代码

def exec_program(p):
    # 基线条件:指令集为空时终止递归
    if not p:
        return
    # 处理当前第一个指令
    print(p[0][1])
    # 递归处理剩余的指令集
    exec_program(p[1:])

运行验证

调用exec_program(calc1)会输出5;调用exec_program(calc2)会依次输出2、4、8,完全符合预期。

问题说明

你之前的尝试存在两个错误:

  1. 递归调用函数时写错了语法,正确的调用方式是exec_program(p[1:]),而非exec_program[1:];
  2. 不需要-1这类操作,切片p[1:]已经能获取从第二个元素到末尾的子列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:40:40