zoukankan      html  css  js  c++  java
  • 逆波兰表达式的递归计算

    题目:用递归求解逆波兰表达式的结果(数字符号之间都用空格隔开)

    逆波兰表达式:

    比如说:(2+3)*4 -> * + 2 3 4

    比如说 * + 11 12 + 24 35 -> (24+ 35)*(11 + 12) = 1357

    前提知识:

    atof函数能把char型转换成浮点数

    atof():double atof(const char *str )

    思路:

    向字符串数组输入,分两种情况,1,是符号,2,是数字

    (向字符串数组输入时如果遇到空格会停止)

    所以如果时第一种情况char 数组只会有c[0]这个位置

    而输入的浮点数则会占据几个位置

    然后开始递归

    如果是第一种情况,符号,则引出下一次递归

    如果是第二种情况,数字,则直接return

    难点:不能考虑一次输完之后再考虑,要便输入边计算

    #include<bits/stdc++.h>
    using namespace std;
    int bolan()
    {
        char c[10];
        cin>>c;
        switch(c[0])
        {
            case'+':return bolan()+bolan();
            case'-':return bolan()-bolan();
            case'*':return bolan()*bolan();
            case'/':return bolan()/bolan();
            default:return atof(c);
            break;
        }
    }
    
    int main()
    {
        cout<<bolan()<<endl;
    }
  • 相关阅读:
    DAY 5 搜索
    DAY 4 基础算法
    P2114 [NOI2014]起床困难综合症
    UVA10140 Prime Distance
    day 2 DP专场
    DAY 3 数论专场
    day 2 下午 骑士 基环树+树形DP
    day 1 晚上 P2824 [HEOI2016/TJOI2016]排序 线段树
    帝国后台加网站地图
    手风琴效果
  • 原文地址:https://www.cnblogs.com/zyacmer/p/10060272.html
Copyright © 2011-2022 走看看