oj2694 逆波兰表达式

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 double exp()
 4 {
 5     char a[10];
 6     scanf("%s",a);
 7     switch(a[0])
 8     {
 9         case '+': return exp()+exp();
10         case '-': return exp()-exp();
11         case '*': return exp()*exp();
12         case '/': return exp()/exp();
13         default : return atof(a);
14     }
15 }
16 int main()
17 {
18     printf("%f\n",exp());
19     return 0;
20 }

/*
前缀表达式是运算符在前,操作数其后,
就是假如碰到一个运算符,其后就需要有连续的两个操作数才能运算消去,
否则就一直等待输入或者等待后面的运算结束得到操作数,
这恰好能用递归实现。
*/

posted on 2012-08-15 19:29  小花熊  阅读(227)  评论(0编辑  收藏  举报

导航