用递归解决全括号表达式 [英] solving fully parenthesized expressions with recursion
本文介绍了用递归解决全括号表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在想出一种递归方法时遇到了麻烦,该方法可以解决完全括号内的方程..例如 ((3+2)/(1+4))
.我能够想出一个递归解决方案来使用递归解决像 +*+3421
这样的中缀表达式,但是对于像 ((3+2)/(1+4))
我有点卡住了.
I am having trouble coming up with a recursive method that can solve fully parenthesized equations..such as ((3+2)/(1+4))
. I was able to come up with a recursive solution for solving infix expressions like +*+3421
using recursion, but for something like ((3+2)/(1+4))
I am a little stuck.
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 )
正确吗?
因此,忽略错误检查,例如...
So, ignoring error checking, something like...
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)
这篇关于用递归解决全括号表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文