逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。逆波兰结构由弗里德里希·鲍尔(Friedrich L. Bauer)和艾兹格·迪科斯彻在1960年代早期提议用于表达式求值,以利用堆栈结构和减少计算机内存访问。逆波兰记法和相应的算法由澳大利亚哲学家、计算机学家查尔斯·汉布林(Charles Hamblin)在1960年代中期扩充在1960和1970年代,逆波兰记法广泛地被用于台式计算器,因此也在普通公众(工程、商业和金融领域)中使用(百度百科)。
5 3
即5+3
*+5 3 2
(5+3)*2
#include<iostream>
using namespace std;
double exp()
{
char n[100];
cin >> n;//依次输入即可,中间加空格
switch (n[0])
{
case'+': return exp() + exp();
case'-': return exp() - exp();
case'*': return exp() * exp();
case'/': return exp() / exp();
default: return atof(n);//char转换为浮点数
break;
}
}
int main()
{
cout<<exp();//例如输入+ 5 3,第一个为+,所以进入exp(),输入的数为5,由于不是‘+-*/’,所以返回int型的5,前面+号右边的输入为3,道理如上,所以返回int 3,一起返回,到5+3=8;
return 0;
}