思路

  • 很容易看出规律,一个运算符出现,其后就一定需要左值和右值,而左值和右值有可能还是运算符,这就需要继续递归。递归终止的条件就是遇到数字。

  • 逆波兰表达式其实是构造成了一颗二叉树

例程

#include<iostream>
#include<cstdlib>
//atof函数用于将以字符数组形式
//存在的浮点数转化为浮点数
//cstdlib库中提供了atof函数
using namespace std;
double nbl(){ //逆波兰表达式函数
char s[100];
double num;
scanf("%s", s);
if(s[0]=='+') return nbl()+nbl(); //如果读到了运算符就递归
if(s[0]=='-') return nbl()-nbl();
if(s[0]=='*') return nbl()*nbl();
if(s[0]=='/') return nbl()/nbl();
return atof(s); //临界点是读到了浮点数
}
int main(){
printf("%f\n", nbl());
return 0;
}

最新文章

  1. (转) Graph-powered Machine Learning at Google
  2. eclipse新建项目,报错“Error: workspace\appcompat_v7\res\values-v21\styles_base.xml No resource found that matches the given name”
  3. Windows Server 2016软件定义存储:Storage Spaces Direct的关键特性
  4. css3中box-flex的使用
  5. linux下的汇编环境搭建(nasm)
  6. JNI编程(二) —— 让C++和Java相互调用(1)
  7. HDOJ 4821 String
  8. OpenGL—Android 开机动画源码分析二
  9. POJ2774(二分+哈希)
  10. Linux内存管理 (9)mmap
  11. 第三十三节,目标检测之选择性搜索-Selective Search
  12. linux命令之kill篇
  13. Python【每日一问】02
  14. ffmpeg基本用法
  15. Freemarker导出带图片的word
  16. 把旧系统迁移到.Net Core 2.0 日记 (13) --图形验证码
  17. 简话Angular 04 Angular过滤器详解
  18. 结对作业——随机生成四则运算(Core 第7组)
  19. 41-邮差送信(dfs)
  20. Knockoutjs+select2 人员搜索

热门文章

  1. 云数据库PolarDB(一)
  2. HBase Rowkey 设计指南
  3. linux -- 添加、修改、删除路由
  4. Linux:Day12(上) 进程
  5. 二 Struts2 接收数据
  6. try/catch中finally的执行时间
  7. Linux内存管理 (1)物理内存初始化
  8. spring boot整合mybatis基于注解开发以及动态sql的使用
  9. UIImagePickerDelegate - 官方文档说明
  10. Mysql数据的增删改查