逆波兰表达式

 

但是一般来说逆波兰表达式应该是后缀表达式才对,前缀应该是波兰表达式。但是题目既然定义了那就说是逆波兰把。

 

 

 

 

 

 

 

 首先就是逆波兰表达式的定义了。1,一个数是一个逆波兰表达式,值为该数(注意)。2,“运算符  逆波兰表达式    逆波兰表达式”表达式的值为这个两个逆波兰表达式的值的运算的结果。

  你看逆波兰表达式由逆波兰表达式组合成的,这个肯定式用递归来做咯。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 using namespace std;
 5 double exp(){
 6     char s[20];
 7     cin>>s;
 8     switch(s[0]){
 9         case '+':return exp()+exp();
10         case '-':return exp()-exp();
11         case '*':return exp()*exp();
12         case '/':return exp()/exp();
13         default return atof(s);
14         break;
15     }         
16 }
17 int main()
18 {
19     printf("%lf",exp());
20     return 0;
21 }

 

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 using namespace std;
 5 double exp(){
 6     char s[20];
 7     cin>>s;
 8     switch(s[0]){
 9         case '+':return exp()+exp();
10         case '-':return exp()-exp();
11         case '*':return exp()*exp();
12         case '/':return exp()/exp();
13         default return atof(s);
14         break;
15     }         
16 }
17 int main()
18 {
19     printf("%lf",exp());
20     return 0;
21 }

 

 

这里解释一下atof是把字符串转化成浮点数的函数,是c++自带的函数。这个不是运算符的情况就是上面的第一种的逆波兰表达式的定义——也就是只有一个数。

 

posted @ 2022-01-30 09:28  prize  阅读(22)  评论(0编辑  收藏  举报