原题:

问题描述:

逆波兰表达式是一种吧运算符前置的算术表达式,例如普通的表达式2+3的逆波兰表示为+23.逆波兰表达式的优点是运算符之间不必有优先级的关系,也不必有括号改变运算次序,例如(2+3)*4的逆波兰表示法为*+2 3 4.本题求解的逆波兰表达式的值。

 

输入数据:

输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。

输出要求:

输出为一行,即表达式的值。

输入样例:

* + 11.0 12.0 +24.0 35.0

输出样例:

1357.000000

解题思路:

 

递归思密达~

 

 

源码:

#include<stdio.h> #include<stdlib.h> #include<math.h> double exp() {     char a[100];     scanf("%s",a);     switch(a[0])     {     case'+':         return exp()+exp();     case'-':         return exp()-exp();     case'*':         return exp()*exp();     case'/':         return exp()/exp();     default:         return atof(a);     } } int main() {     double ans;     ans=exp();     printf("%f\n",ans);     return 0; } 9