逆波兰表达式特征:
1.每个运算符两边是两个逆波兰表达式。
2.不用加括号就可以确定运算顺序
栗子:*/+12 36 + 1 3 - 15 8
设n()函数为求解逆波兰表达式的递归程序
1:n()*n()
2:n(n()/n())*n()
3:n(n( + )/n( + ))*n( - )
so:(12+36)/(1+3)*(15-8)
代码如下:
#include<iostream>
#include<stdlib.h>
using namespace std;
double n(){
char str[20];
cin>>str;
switch(str[0]){
case'+':return n()+n();
case'-':return n()-n();
case'*':return n()*n();
case'/':return n()/n();
default:return atof(str);
}
}
int main (){
cout<<n();
return 0;
}