1 #include2 #include 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 }
/*
前缀表达式是运算符在前,操作数其后,就是假如碰到一个运算符,其后就需要有连续的两个操作数才能运算消去,否则就一直等待输入或者等待后面的运算结束得到操作数,这恰好能用递归实现。 */