前缀表达式
递归的思想
如何读取数据和字符
递归函数如何处理传递进来的数据或者运算符号
秉承一个思路:如果是运算符号就向下寻找两个数据,然后用相应的运算符号来激素那结果并且返回给上一个函数;如果是数字,就转换成浮点数返回给上一个函数。
实现方法
double solve() { cin >> digit_or_num; if (digit_or_num[0] == '+') return solve() + solve(); if (digit_or_num[0] == '-') return solve() - solve(); if (digit_or_num[0] == '*') return solve() * solve(); if (digit_or_num[0] == '/') return solve() / solve(); else return atof(digit_or_num);//将字符串转化为浮点数 }
我的脑回路
思考目的:每一个函数需要什么样的参数来实现代码的目的,这个题需要每次返回一个浮点数。如果是运算符号,就要获得两个浮点数,所以调用两次函数,分别获得一个浮点数;如果是数字,就可以返回一个合法的浮点数,供上一个函数利用。
代码
(悄咪咪)放上来递归函数的代码应该主函数不需要了吧,主函数只需要控制输出格式就行了。
后记
傻fufu的博主依然不知道怎么控制代码块的颜色。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231359.html原文链接:https://javaforall.net
