题目是读入一个逆波兰表达式,并计算其值是多少。
代码:
#include<bits/stdc++.h>
using namespace std;
double exp()
{
char s[20];
cin>>s;
switch(s[0])
{
case'+': return exp()+exp();
case'-': return exp()-exp();
case'*': return exp()*exp();
case'/': return exp()/exp();
default: return atof(s);
break;
}
}
int main()
{
printf("%lf",exp());
return 0;
}
解释:比如写入:* + 3 4 5
先读入“*” 进入 return exp()*exp() ,再调用第一个exp()再次读入下一位“+”,进入
return exp()+exp(),按照顺序再调用这一次的第一个exp(),读入3,第二个exp()读入4,返
回结果7,则在return exp()*exp()中第一个exp()值为7,其第二个exp()再继续读入5,返回结果
35。最后结果为35.000000。