演算法基礎 逆波蘭表示式 遞迴

2021-10-19 12:00:37 字數 907 閱讀 5643

題目:

逆波蘭表示式是一種把運算子前置的算術表示式(其實一般教科書上稱這種表示式為波蘭表示式) ,例如普通的表示式2 + 3的逆波蘭表示法為+ 2 3。逆波蘭表示式的優點是運算子之間不必有優先順序關係,也不必用括號改變運算次序,例如(2 + 3) * 4的逆波蘭表示法為* + 2 3 4。本題求解逆波蘭表示式的值,其中運算子包括+ - * /四個。

輸入

輸入為一行,其中運算子和運算數之間都用空格分隔,運算數是浮點數

輸出

輸出為一行,表示式的值。

樣例輸入

* + 11.0 12.0 + 24.0 35.0

樣例輸出

1357.000000

#include

#include

#include

using

namespace std;

double

exp(

)//讀入乙個逆波蘭表示式,並計算其值

}int

main()

遞迴思路:

1.本題中「逆波蘭表示式」的定義:

(1) 乙個數是乙個逆波蘭表示式,值為該數

(2) 「運算子 逆波蘭表示式 逆波蘭表示式」 是逆波蘭表示式 ,值為兩個逆波蘭表示式的值運算的結果

2.所以一點一點讀入,如果是符號則返回對應符號的表示式定義,如果是值則直接返回值。

3.就像套娃一樣,在最後始終會到了返回數字的一層。

注:*double atof(const char str)

把引數 str 所指向的字串轉換為乙個浮點數

遞迴 逆波蘭表示式

中置表示式 1 2 3 前置 1 2 3 後置 1 2 3 這道題說逆波蘭表示式是前置就前置吧,題意就是輸入一行,其中運算子和運算數直接都用空格分開,輸出乙個表示式的值。思路就是用遞迴的思想,首先需要寫出逆波蘭表示式的定義 1 乙個數是乙個逆波蘭表示式,值為該數。2 運算子 逆波蘭表示式 逆波蘭表示...

(遞迴)逆波蘭表示式

例題 逆波蘭表示式 逆波蘭表示式是一種把運算子前置的算術表示式,例如普通的 表示式2 3的逆波蘭表示法為 2 3。逆波蘭表示式的優點是運算 符之間不必有優先順序關係,也不必用括號改變運算次序,例如 2 3 4的逆波蘭表示法為 2 3 4。本題求解逆波蘭表示式的值,其中運算子包括 四個。輸入輸入為一行...

遞迴 之 逆波蘭表示式

逆波蘭表示式是一種把運算子前置的算術表示式,例如普通的表示式2 3的逆波蘭表示法為 2 3。逆波蘭表示式的優點是運算子之間不必有優先順序關係,也不必用括號改變運算次序,例如 2 3 4的逆波蘭表示法為 2 3 4。本題求解逆波蘭表示式的值,其中運算子包括 四個。輸入資料 輸入為一行,其中運算子和運算...