遞迴:逆波蘭表示式

yajie_china發表於2018-05-15

1.問題

逆波蘭表示式的定義:

  • 一個數是一個逆波蘭表示式,值為該數;
  • “運算子 逆波蘭表示式 逆波蘭表示式” 是逆波蘭表示式,值為兩個逆波蘭表示式的值運算結果

樣例輸入:

* + 11.0 12.0 + 24.0 35.0

樣例輸出:

1357.000000

提示:

(11.0 + 12.0)* (24.0 + 35.0)

2.程式碼

#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;

double exp(){
    //讀入一個逆波蘭表示式,並計算其值
    char s[20];
    cin >> s;
    switch(s[0]){
        case '+' : return exp() + exp();
        case '-' : return exp() - exp();
        case '*' : return exp() * exp();
        case '/' : return exp() / exp();
        default  : return atof(s);
        break;
    }
}

int main(){
    printf("%lf", exp());
    return 0;
}

相關文章