递归:逆波兰表达式

1.问题

逆波兰表达式的定义:

  • 一个数是一个逆波兰表达式,值为该数;
  • “运算符 逆波兰表达式 逆波兰表达式” 是逆波兰表达式,值为两个逆波兰表达式的值运算结果

样例输入:

* + 11.0 12.0 + 24.0 35.0

样例输出:

1357.000000

提示:

(11.0 + 12.0)* (24.0 + 35.0)

2.代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
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;
}

阅读更多
个人分类: 算法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

递归:逆波兰表达式

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭