一直觉得递归还是很好理解的,看得懂,会用,原来我一直用的不够熟练,还可以用得这么巧妙啊。。。
逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式
2 + 3的逆波
兰表示法为
+ 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号
改变运算次序,例如(2 + 3) * 4的逆波兰表示法为
* + 2 3 4。本题求解逆波兰表达式的值,
其中运算符包括 + -* /四个。
输入数据
输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数
输出要求
输出为一行,表达式的值。
176
输入样例
* + 11.0 12.0 + 24.0 35.0
输出样例
1357.000000
解题思路
这个问题看上去有些复杂,如果只是简单地模拟计算步骤不太容易想清楚,但是如
果用递归的思想就非常容易想清楚。让我们根据逆波兰表达式的定义进行递归求解。在
递归函数中,针对当前的输入,有五种情况:
1)输入是常数,则表达式的值就是这个
常数;2)输入是
’+’,则表达式的值是再继续读入两个表达式并计算出它们的值,然后
将它们的值相加;
3)输入是
’-’;4)输入是
’*’; 5)输入是
’/’;后几种情况与
2)相同,
只是计算从
’+’变成’-’,’*’,’/’。
参考程序
实现中常见的问题
问题一:不适应递归的思路,直接分析输入的字符串,试图自己写进栈出栈的程序,
写得逻辑复杂后,因考虑不周出错;
问题二:不会是用
atof()函数,自己处理浮点数的读入,逻辑复杂后出错。
分享到:
相关推荐
逆波兰表达式实现 逆波兰表达式是一种后缀表达式,通常用于表示数学表达式的计算顺序。它的特点是运算符在后面,先计算括号里的运算,然后计算乘除,最后计算加减。逆波兰表达式的实现可以通过栈或队列来实现。 逆...
逆波兰表达式,又称后缀表达式,是一种用于表示数学计算的符号表示法。它将操作符放在操作数之后,避免了使用括号,简化了运算过程。在基于逆波兰表达式的计算程序中,通常包括以下几个核心知识点: 1. **逆波兰...
### 逆波兰表达式及其算法实现 #### 一、引言 逆波兰表达式(Reverse Polish Notation, RPN)是一种特殊的数学表达式表示方法,它最初由波兰逻辑学家Jan Łukasiewicz提出。与传统的中缀表达式相比,逆波兰表达式...
逆波兰表达式,又称后缀表达式,是一种在编译原理和计算机科学中常见的表示算术和逻辑表达式的方式。它的主要特点是操作符位于其操作数之后,这与我们常用的中缀表达式(操作符位于操作数之间)不同。这种表示方式在...
C语言:设计一个算法,将一般算术表达式转化为逆波兰表达式,并求逆波兰表达式的值。数据结构实验
C语言之逆波兰表达式完整代码解析 本文将详细讲解C语言之逆波兰表达式完整代码的实现,包括中缀表达式转换为后缀表达式、后缀表达式的计算、输入表达式的判断等知识点。 一、中缀表达式转换为后缀表达式 中缀...
逆波兰表达式(Reverse Polish Notation,RPN)是一种没有括号且运算符放在操作数之后的数学表达式表示方式,常用于计算器设计。在这个简易的灰色逆波兰表达式计算器中,我们主要涉及以下几个关键知识点: 1. **逆...
逆波兰表达式是一种特殊的数学表示法,也称为后缀表达式。它将操作符放置在操作数之后,以此避免使用括号。这种表示法在计算和解析时特别有用,因为无需考虑运算符优先级,只需按照操作数出现的顺序进行计算即可。在...
逆波兰表达式,又称后缀表达式,是一种在计算领域广泛应用的数学表示方式,它将操作符放在操作数之后,避免了使用括号来明确运算优先级。这种表示方法非常适合用栈来处理,因为可以直观地按照“后进先出”(LIFO)的...
逆波兰表达式(Reverse Polish Notation,RPN)算法是一种基于后缀表示法的计算方法,主要用于解决数学表达式的求值问题。它将运算符放置在操作数之后,避免了括号的使用,使得表达式求值的过程更为直观。在这个算法...
逆波兰表达式求值是计算机科学中的一个重要概念,主要用于避免使用括号来表示运算优先级,从而简化表达式的解析过程。逆波兰表达式,又称后缀表达式,是一种没有括号、无需考虑运算符优先级的数学表达式书写方式。在...
逆波兰表达式,又称后缀表达式,是一种用于表示数学计算的符号表示法。它将操作符放在操作数之后,避免了使用括号来决定运算的优先级,从而简化了解析过程。本教程将介绍两种在C/C++或Linux环境下求解逆波兰表达式的...
易语言源码逆波兰表达式计算易语言源码.rar 易语言源码逆波兰表达式计算易语言源码.rar 易语言源码逆波兰表达式计算易语言源码.rar 易语言源码逆波兰表达式计算易语言源码.rar 易语言源码逆波兰表达式计算易语言...
逆波兰表达式,又称后缀表达式,是一种不使用括号的数学表达式表示方法,它使用栈的数据结构来解析和计算表达式。在逆波兰表达式中,运算符位于其操作数之后,使得表达式的解析更为简单。本篇文章将详细讲解如何用...
逆波兰表达式(Reverse Polish Notation,RPN)是一种数学表达式表示方法,它不需要使用括号,而是通过运算符后置的方式明确运算顺序。在RPN计算器中,运算符紧跟在其操作数之后,使得计算过程更为简洁。这种表示法...
### 利用堆栈实现逆波兰表达式(后缀法) #### 一、逆波兰表达式简介 逆波兰表达式,又称后缀表达式或后缀记法,是一种没有括号且运算符位于操作数之后的数学表达式书写方式。在计算机科学中,这种表达式被广泛...
逆波兰表达式的长 度不超过一行,以 "$"作为输入结束,操作数之间用空格分隔,操作符只可能有+、—、*、/四种 运算。例如: 23434 + 2*$。 数据结构作业
【数据结构与算法】逆波兰表达式完整版,使用java语言编写。逆波兰表达式又叫做后缀表达式,是一种没有括号,并严格遵循“从左到右”运算的后缀式表达方法