Redian新闻
>
postfix evaluation的递归解法
avatar
postfix evaluation的递归解法# JobHunting - 待字闺中
b*n
1
Postfix evaluation 的经典解法是把数字放到堆栈里,遇到算符就把最上面的两个数
字拿出来做计算,再把结果放进堆栈,以此类推,直到结束。
还有一个从右往左扫描的递归解法:
// 假设postfix数字只有一位
double eval_postfix(const string& postfix, size_t& idx) {
char c = postfix[idx];
if (c == '+' || c == '-' || c == '*' || c == '/') {
double right = eval_postfix(postfix, ++idx);
double left = eval_postfix(postfix, ++idx);
return calc(left, c, right);
}
else
return c - '0';
}
既然堆栈的解法是从左往右扫描,有没有从左往右的递归解法? 大家讨论讨论。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。