关于JAVA中利用Recursion解决运算问题

Evaluateareversepolishexpression.假设所有数字都是singledigits,并且都是intermediate,最后的结果也必须是singl... Evaluate a reverse polish expression.
假设所有数字都是single digits, 并且都是 intermediate,最后的结果也必须是single digits,并且有+,-,*

例如 "832*-" 的结果是 "2".
"83-2+" 的结果是 "7".
"53-2*11+-" 的结果是 "2".

提示:
主意数字是在一个Srting类里面
使用charAt 和 substring 在 String class

public String evaluate(String expr) {

}

不允许使用loop,只允许使用local variables

想了半天还是不会,谢谢大家了……
展开
 我来答
henterji
2009-03-23 · TA获得超过2973个赞
知道大有可为答主
回答量:1835
采纳率:0%
帮助的人:1867万
展开全部
import java.io.IOException;
import java.util.Arrays;
import java.util.Stack;

public class Rpn {
public static void main(String args[]) throws IOException {
String s = "83-2+";
Stack<String> tks = new Stack<String>();
tks.addAll(Arrays.asList(s.trim().split("")));
tks.remove("");
try {
int r = evalrpn(tks);
if (!tks.empty())
throw new Exception("error");
System.out.println(r);
} catch (Exception e) {
System.out.println("error");
}
}

private static int evalrpn(Stack<String> tks) throws Exception {
String tk = tks.pop();
int x, y;
try {
x = Integer.parseInt(tk);
} catch (Exception e) {
y = evalrpn(tks);
x = evalrpn(tks);
if (tk.equals("+"))
x += y;
else if (tk.equals("-"))
x -= y;
else if (tk.equals("*"))
x *= y;
else if (tk.equals("/"))
x /= y;
else
throw new Exception();
}
return x;
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式