如何在递归函数中使用元组实现表达式求值?
递归实现嵌套表达式求值函数
你需要实现的递归函数要求如下:
- 输入是包含3个元素的元组:第1、3个元素可以是数字或同结构的嵌套元组,第2个元素是表示运算的字符串(支持+、-、*、/)
- 示例输入
(10, '-', (5, '*', 3))应返回-5
你当前的代码仅能处理左右元素都是数字的情况,无法处理嵌套元组,只需在计算前先对左右元素递归求值即可解决问题。修改后的代码如下:
def evaluate(equation): # 递归处理左操作数:如果是元组就递归求值,否则直接用原数字 left = evaluate(equation[0]) if isinstance(equation[0], tuple) else equation[0] # 递归处理右操作数 right = evaluate(equation[2]) if isinstance(equation[2], tuple) else equation[2] # 根据运算符计算结果 if equation[1] == "+": return left + right elif equation[1] == "*": return left * right elif equation[1] == "-": return left - right elif equation[1] == "/": return left / right
代码说明
- 核心逻辑:不管左/右操作数是数字还是嵌套元组,都先通过递归调用
evaluate函数拿到其最终的数值结果 - 用
isinstance判断类型比直接用type更灵活,能兼容子类情况 - 把运算逻辑放在递归求值之后,无需再判断左右是否为元组,简化了代码结构
内容的提问来源于stack exchange,提问作者Pabloflopygame
相关产品推荐
相关产品推荐

