一道有趣的递归问题。
/********************************************
**文件名:百炼-2694
**Copyright (c) 2015-2025 OrdinaryCrazy
**创建人: OrdinaryCrazy
**日期:20170806
**描述:百炼-2694参考答案
**版本:1.0
*********************************************/
#include <stdio.h>
#include <stdlib.h>
/********************************************
根据逆波兰表达式的定义进行递归求解
当输入一个字符串时,有2种情况:
1,字符串是一个数字,则使用atof(char*)函数转化为浮点数输出
2,字符串是一个运算符,则对其后的两个表达式进行相应的运算,输出运算结果
还有atof函数的定义在stdlib.h里
*********************************************/
double solve(void)
{
char a[10];
scanf("%s",a);
switch(a[0])
{
case '+' : return solve() + solve();
case '-' : return solve() - solve();
case '*' : return solve() * solve();
case '/' : return solve() / solve();
default : return atof(a);
}
}
int main()
{
printf("%f\n",solve());
return 0;
}