题目地址
#include<stdio.h>
#include<string.h>
char str[100000];
int i=0;
double count1()
{
double sum;
int n;
switch(str[i])
{
case '+':i++;return count1()+count1();
case '-':i++;return count1()-count1();
case '*':i++;return count1()*count1();
case '/':i++;return count1()/count1();
case ' ':i++;return count1();
default:
sscanf(&str[i],"%lf%n",&sum,&n);
i+=n;
returnsum;
}
}
int main()
{
while(gets(str))
{
i=0;
printf("%.2lf\n",count1());
memset(str,0,sizeof(str));
}
return 0;
}
要理解递归先理解递归。