表达式求值(递归算法)
来源:互联网 发布:尚学堂官网 java 编辑:程序博客网 时间:2024/06/17 19:05
问题描述:见下图
程序代码:
/* *题目描述:表达式求值(递归算法) 表达式:1、可以是一个项 2、也可以由多个项通过加减构成 项:1、项本身可以是一个因子 2、项也可以由若干个因子通过乘除组成 因子:1、因子本身可以是一个数字 2、因子也可以由表达式加上括号组成 */ #include <iostream> #include <cstring> #include <cstdlib> using namespace std; int factor_value();//读入一个因子并且返回其值 int term_value();//读入一项的并且返回其值 int expression_value();//读入一个表达式并返回值 int main() { cout<< expression_value() <<endl; return 0; } int expression_value()//读入一个表达式并返回值 { int result = term_value();//求第一项的值 bool more = true; while( more) { char op = cin.peek();//看一个字符不取走 if( op == '+'|| op == '-') { cin.get();//从输入流中取走一个字符('+'或者'-') int value = term_value();//读入下一个项 if(op == '+') result +=value; else result -= value; } else more = false; } return result; } int term_value()//读入一项的并且返回其值 { int result = factor_value();//读入一个因子 while(true) { char op = cin.peek();//取出一个字符判断还有没有因子 if(op== '*'||op == '/') { cin.get(); int value = factor_value();//读入下一个因子 if(op == '*') result *=value; else result /=value; } else break; } return result; } int factor_value()//读入一个因子并返回值 { int result = 0; char c = cin.peek();//取出一个字符判断输入流中是一个因子还是一个整数 if( c =='(') { cin.get();//去掉左括号 result = expression_value();//读入表达式 cin.get();//去掉右括号 } else//是一个数字 { while(isdigit(c))//求出数字的值 { result = 10 * result +c- '0'; cin.get(); c= cin.peek(); } } return result; }运行结果:
0 0
- 表达式求值(递归算法)
- nyoj305 表达式求值(递归)
- 表达式求值 (递归实现)
- 多项式求值算法(递归)
- 多项式求值算法(递归)
- NYOJ 305 表达式求值(递归)
- NYOJ 305 表达式求值 (递归)
- NYOJ-305-表达式求值(递归)
- 表达式求值(递归和栈)
- 算法_fibonacci_递归求值
- nyist 305 表达式求值 (递归)
- 表达式求值之递归下降
- 逆波兰表达式递归求值
- 表达式求值算法
- 表达式求值简便算法
- 表达式求值算法
- 表达式求值算法总结
- NYOJ 35 表达式求值(非递归+栈)
- 297. Serialize and Deserialize Binary Tree
- IOS-Runtime学习总结
- Leetcode 459 python 解题报告
- 举例理解“交互”的含义
- numpy.nonzero()函数()
- 表达式求值(递归算法)
- c++之std::thread多线程的使用和获取pid/tid
- java基础知识
- libsvm的make或者mex不成功(No supported compiler or SDK was found)
- zabbix基础·cenOS7.2部署zabbix3.2
- 工作总结
- centos系统添加/删除用户和用户组
- 全局变量和全局常量在多文件中声明的方法
- POJ 1039 [Pipe]