1 #include<stdio.h> 2 #include<stdlib.h> 3 double exp() 4 { 5 char a[10]; 6 scanf("%s",a); 7 switch(a[0]) 8 { 9 case '+': return exp()+exp(); 10 case '-': return exp()-exp(); 11 case '*': return exp()*exp(); 12 case '/': return exp()/exp(); 13 default : return atof(a); 14 } 15 } 16 int main() 17 { 18 printf("%f\n",exp()); 19 return 0; 20 }
/*
前缀表达式是运算符在前,操作数其后,
就是假如碰到一个运算符,其后就需要有连续的两个操作数才能运算消去,
否则就一直等待输入或者等待后面的运算结束得到操作数,
这恰好能用递归实现。
*/