python - 用递归求解完全括号表达式

标签 python recursion

我在想出一个可以求解完全括号方程的递归方法时遇到了麻烦......例如 ((3+2)/(1+4))。我能够想出一个递归解决方案来使用递归来解决像 +*+3421 这样的中缀表达式,但是对于像 ((3+2)/(1+4)) 我有点卡住了。

def evalPrefix(exp):
    it = iter(exp)
    return evalPrefixInner(it)

def evalPrefixInner(it):
    item = it.next()
    if isInt(item):
        return int(item)
    else: 
        operand1 = evalPrefixInner(it)
        operand2 = evalPrefixInner(it)
        return execute(item, operand1, operand2)

最佳答案

你的语法是:

expr ::= int | ( expr op expr )

正确吗?

所以,忽略错误检查,比如...

def evalExpr(it):
    item = it.next()
    if isInt(item):
        return int(item)
    else: 
        //item should = lparen
        operand1 = evalExpr(it)
        op = it.next()        
        operand2 = evalExpr(it)
        rparen = it.next() 
        return execute(op, operand1, operand2)

关于python - 用递归求解完全括号表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13103965/

相关文章:

algorithm - 我怎样才能展开重复: T(n)=2T((n+2)/3)

php - 循环遍历多维对象的递归PHP函数

c - 在C中的另一个函数内定义递归函数

Python heapq 与排序的复杂性和性能

python - Twisted 中不同的协议(protocol)如何相互交互

javascript - ndb.key() -> 使用 Javascript 执行此操作

python - 如何在 Python 中创建二维数组

python - 将 @property 与另一个装饰器结合起来

按字母顺序将 2 个字符串组合到另一个字符串中

Python递归和返回