百练2694 逆波兰表达式(递归求解)

xiaoxiao2021-02-28  36

逆波兰表达式的递归定义:

1. 任何数都是逆波兰表达式

2. +、-、*、/后面加上空格,再加上一个逆波兰表达式,再加空格,再加一个逆波兰表达式,形成一个逆波兰表达式。

故可采用递归求解逆波兰表达式的值,类似编译原理中递归下降分析的思想:

#include<stdio.h> #include<math.h> #include<stdlib.h> double exp() { char s[10]; scanf("%s",s); switch(s[0]) { case '*': return exp()*exp(); case '+': return exp()+exp(); case '/': return exp()/exp(); case '-': return exp()-exp(); default: return atof(s); //数字本身就是逆波兰表达式 } } int main() { double ans; ans=exp(); printf("%f\n",ans); return 0; }

转载请注明原文地址: https://www.6miu.com/read-2625929.html

最新回复(0)