逆波兰表达式递归

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32175379/article/details/71480735

逆波兰表示法(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;
}

猜你喜欢

转载自blog.csdn.net/qq_32175379/article/details/71480735