【问题标题】:Recursive Calculation of a queue队列的递归计算
【发布时间】:2016-10-23 13:24:56
【问题描述】:

我在队列中有一些元素(例如/ - 4 2 + 4 5)。

需要计算为(4-2)/(4+5)。有人可以向我解释 递归算法?

【问题讨论】:

标签: c algorithm data-structures


【解决方案1】:

您尝试理解polish notation,它是逻辑、算术和代数的一种符号形式。

将数字 4 和 5 相加的表达式在前缀/抛光符号中写成 + 4 5 而不是 4 + 5

数字 4 和 2 相减的表达式在前缀/抛光符号中写成 - 4 2 而不是 4 - 2

然后,可以组合操作。 op3 (op1 m1 n1) (op2 m2 n2),可以解释为(m1 op1 n1) op3 (m2 op2 n2),其中op1op2op3可以是+-*/

括号是可选的,前面的波兰符号可以写成 op3 op1 m1 n1 op2 m2 n2

理解它的最简单方法是使用树。树还将帮助您更好地理解用于评估此类符号的递归算法。在这样的树上,任何操作都会被认为是一个节点,数字就是叶子。

要计算一个表达式,需要:

  • 解析表达式:它包括识别运算符和数字并构建关联树。
  • 访问创建的树以评估所有操作并产生最终结果。

【讨论】:

  • 那真的很有帮助...但是我如何在使用递归方法返回结果的函数中实现它
  • 将表达式(4-2)/(4+5) 视为一棵树。 /是树的根,-+是连接到/的顶点,42是连接到-的顶点,4和@98765434@是连接到+ 的顶点。然后注意树的内部节点是运算符,叶子是数字。然后,您可以通过使用递归函数以深度优先搜索方法评估树来计算表达式。
猜你喜欢
  • 1970-01-01
  • 2010-12-01
  • 2011-08-07
  • 1970-01-01
  • 2019-09-03
  • 2018-08-11
  • 2015-09-08
  • 1970-01-01
  • 2021-03-21
相关资源
最近更新 更多