递归:逆波兰表达式

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;
}

猜你喜欢

转载自blog.csdn.net/yajie_china/article/details/80330585