首页 > 其他 > 详细

递归-中项表达式求解

时间:2020-07-05 18:19:45      阅读:52      评论:0      收藏:0      [点我收藏+]

题外话:

某天晚上梦见更了五六篇博客而不知疲惫.

如果这是现实该多好啊哈哈哈!美梦成真吧!

 

中项表达式就是最普通的表达式.也是几个小定义来回递归.这个题在去年期末上机题中出现过,但是比这个还有难一些.

呜呜呜,去年的我啥都不会(当然现在也是),为难我干什么呀!!!!

技术分享图片

 

 

解:

技术分享图片

 

 

技术分享图片

 

 

 

 1 #include <iostream>
 2 using namespace std;
 3 /*
 4  * 感觉脑子有坑x10086
 5  * 
 6  * 
 7  * 
 8  * 首先前两个是需要循环的,因为有连加的情况,
 9  * 而最后一种不用,括号里面直接就是一个新的表达式
10  * 
11  * 其次注意返回值,,,
12  * 
13  * 因为可能没有+-*/所以result 上来就是??_value的值,就不要先搞个sum=0 return sum这个玩意了
14  */
15 int term_value();
16 int factor_value();
17 int expreesion_value(){
18 
19     int result = term_value();
20     while(1){
21         char op=cin.peek();//查看第一个字符但是不取走
22         if(op==+||op==-){
23             if(op==+) {
24                 cin.get();//取走一个字符
25                 int value = term_value();
26                 result = result + value;
27             }
28             else{
29                 cin.get();//取走一个字符
30                 int value = term_value();
31                 result = result - value;
32             }
33 
34         }
35         else{
36             break;
37         }
38     }
39     return result;
40 }
41 int term_value(){
42 
43     int result = factor_value();
44     while(1){
45         char op=cin.peek();
46         if(op==*||op==/){
47             if(op==*) {
48                 cin.get();
49                 int value = factor_value();
50                 result = result *value;
51             }
52             else{
53                 cin.get();
54                 int value = factor_value();
55                 result = result / value;
56 
57             }
58         }
59         else{
60             break;
61         }
62     }
63     return result;
64 
65 }
66 int factor_value(){
67     int result=0;
68 
69 
70         char op = cin.peek();
71         if (op == () {
72             cin.get();
73             result = expreesion_value();
74             cin.get();
75         } else {
76             while (isdigit(op)) {
77                 result = result * 10 + op - 0;//计算整数
78                 cin.get();
79                 op = cin.peek();
80             }
81         }
82 
83         return result;
84     }
85 
86 
87 
88 
89 
90 
91 int main(){
92     cout<<expreesion_value();
93 
94 }

 

递归-中项表达式求解

原文:https://www.cnblogs.com/zhmlzhml/p/13246865.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!