2024年5月21日发(作者:)
c++递归求解逆波兰表达式
以下是一个C++递归求解逆波兰表达式的示例代码:
```c++
#include
#include
#include
using namespace std;
// 递归求解逆波兰表达式
int evalRPN(string exp) {
stack
for (char c : exp) {
if (isdigit(c)) { // 如果是数字,则将其转换为整数并入栈
int num = c - '0';
(num);
} else { // 如果是运算符,则从栈中弹出两个数字进行计算,并将结果
入栈
int b = (); ();
int a = (); ();
switch (c) {
case '+': (a + b); break;
case '-': (a - b); break;
case '*': (a * b); break;
case '/': (a / b); break;
}
}
}
// 最后栈中应该只剩下一个数字,即为逆波兰表达式的计算结果
return ();
}
int main() {
string exp = "2 3 + 4 *"; // 逆波兰表达式为 "2 3 + 4 *"
int result = evalRPN(exp); // 计算逆波兰表达式的值
cout << "The result is " << result << endl; // 输出结果为 25
return 0;
}
```
该代码使用了一个栈来存储数字,遍历逆波兰表达式中的每个字符。如果是数字,
则将其转换为整数并入栈;如果是运算符,则从栈中弹出两个数字进行计算,并
将结果入栈。最后,栈中应该只剩下一个数字,即为逆波兰表达式的计算结果。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1716299011a2727174.html
评论列表(0条)