逆波兰表达式的递归定义:
1. 任何数都是逆波兰表达式
2. +、-、*、/后面加上空格,再加上一个逆波兰表达式,再加空格,再加一个逆波兰表达式,形成一个逆波兰表达式。
故可采用递归求解逆波兰表达式的值,类似编译原理中递归下降分析的思想:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
double exp()
{
char s[10];
scanf("%s",s);
switch(s[0])
{
case '*': return exp()*exp();
case '+': return exp()+exp();
case '/': return exp()/exp();
case '-': return exp()-exp();
default: return atof(s); //数字本身就是逆波兰表达式
}
}
int main()
{
double ans;
ans=exp();
printf("%f\n",ans);
return 0;
}