2016-10-23 11 views
0

キュー内にいくつかの要素があります(たとえば、/ - 4 2 + 4 5)。キューの再帰的計算

(4-2)/(4+5)として計算する必要があります。誰かが私に説明することができます 再帰これについてのアルゴリズム?

+0

おそらくこれは役に立ちますか? http://stackoverflow.com/questions/2722889/understanding-reverse-polish-notation-for-homework-assignment – ZzetT

答えて

1

ロジック、算術、代数の表記法の形式であるpolish notationを理解しようとします。

数字4と5を追加する式は、接頭辞/ポーランド表記では4 + 5ではなく+ 4 5と書かれています。

数字4と2を減算する式は、接頭辞/ポーランド表記で4 - 2ではなく- 4 2と書かれています。

次に、操作を構成できます。 op1op2op3+-*/ことができる(m1 op1 n1) op3 (m2 op2 n2)、と解釈することができるop3 (op1 m1 n1) (op2 m2 n2)、。

括弧は任意であり、前ポーランド記法は op3 op1 m1 n1 op2 m2 n2

それを理解するための最も簡単な方法を記述することができ、ツリーを使用することです。ツリーはまた、そのような表記を評価するために使用される再帰アルゴリズムをよりよく理解するのに役立ちます。このようなツリーでは、どの操作もノードとみなされ、数字は葉です。

は、式を評価するためには、必要があります:それは演算子と数字を識別するのに構成され、準ツリーを構築:

  • は式を解析します。
  • 作成したツリーにアクセスしてすべての操作を評価し、最終結果を生成します。
+0

これは本当に役立ちます...しかし、どのように私は結果を返すために再帰的なメソッドを使用する関数で実装することができます –

+1

式 '(4-2)/(4 + 5)'をツリーと考えてください。 '/'に接続されている頂点は '/'、 ''は '/'に接続された頂点、 ''は '/'に接続された頂点です。頂点は '+'に接続されています。次に、ツリーの内部ノードが演算子であり、リーフが数値であることに注目してください。次に、再帰関数を使用した深さの最初の検索手法でツリーを評価することによって式を計算できます。 – Xaver

関連する問題