我有一个问题,我不知道如何在OZ中实现它:假设给您一个由元组构建的树描述的算术表达式,如下所示:
实现一个函数Eval,它接受一个算术表达式并返回它的值。
例如,add(int(1) mul(int(3) int(4)))
是一个算术表达式,其计算值返回13。
发布于 2019-01-14 08:33:57
到目前为止,你还没有表现出你的尝试,这有点令人难过。
不管怎么说。通常,在处理这些问题时,您会从递归的角度考虑。模式匹配是分析表达式的一种很好的方法。
例如,如果您能够计算int(4)
,那么很明显如何使用简单的递归计算add(int(4) int(4))
:
declare
proc {Eval Exp Res}
case Exp
of int(N) then Res = N
[] add(X Y) then
local R1 R2 in
{Eval X R1}
{Eval Y R2}
Res = R1 + R2
end
end
end
现在,您可以使用mul
或任何其他表达式来扩展它。
https://stackoverflow.com/questions/54110432
复制相似问题