c++递归求解逆波兰表达式

c++递归求解逆波兰表达式


2024年5月21日发(作者:)

c++递归求解逆波兰表达式

以下是一个C++递归求解逆波兰表达式的示例代码:

```c++

#include

#include

#include

using namespace std;

// 递归求解逆波兰表达式

int evalRPN(string exp) {

stack nums; // 用于存储数字的栈

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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信