题目:要求输入一个表达式字符串,利用递归,求解表达式的值
如:(5 * 10) + ((3 * 6) - 7)
解题思路
找到表达式中优先级(数值)最低的运算符,以该运算符分割表达式,然后递归求解。
设定:+、-
优先级数值为 1,*、/
优先级数值为 2,如果遇到(
,那么之后遇到的运算符优先级数值都+100,当遇到)
时,优先级数值-100
代码
变量声明:
char[] c
:存储表达式中的每一个字符的字符数组op
:用于定位优先级最小的运算符的位置(字符数组下标),初始值-1pri
:用于记录当前处理的表达式中最低优先级的优先级数值,初始值10000-1cur_pri
:用于记录字符数组中每个字符的优先级 每次循环都要初始化 初始值为10000temp
:用于记录由括号带来的临时优先级s
:表达式字符串head
:头下标(用于限定需要处理的表达式的范围)tail
:尾下标(用于限定需要处理的表达式的范围)
public int clic(String s, int head, int tail){
char[] c = s.toCharArray();//将表达式字符串转换为字符数组
int op = -1, pri =