((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)
((3 + 2)/(1 + 4)) -> (5/(1 + 4)) -> (5/5) -> 1 ... 이것은 재귀가 무너질 것이라고 생각하는 것입니다. –
도움이 될 수있어서 기쁩니다. BTW, 원래 접두사 기반 소스를 포함하도록 질문을 롤백했습니다. 내 대답의 형식이 질문에서 더 의미가 있습니다. – mackworth