如何用递归实现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,完全符合预期。
问题说明
你之前的尝试存在两个错误:
- 递归调用函数时写错了语法,正确的调用方式是
exec_program(p[1:]),而非exec_program[1:]; - 不需要
-1这类操作,切片p[1:]已经能获取从第二个元素到末尾的子列表。
内容的提问来源于stack exchange,提问作者Bart
相关产品推荐
相关产品推荐

