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