如果波兰表达式的第一位是一个符号,那么接下来是两个波兰表达式进行该符号的运算;
如果波兰表达式的第一位不是符号,那么接下来将字符转为数字进行运算。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
double p(){
string s;
cin>>s;
if(s[0]=='+') return p()+p();
else if(s[0]=='-') return p()-p();
else if(s[0]=='*') return p()*p();
else if(s[0]=='/') return p()/p();
else return stof(s);
}
int main(){
printf("%lf",p());
return 0;
}
代码很简单,但是递归有时候就是想不出来 ……