我有一个关于在递归调用方法时保存数据的可能方法的问题。
我想在ArrayList
中保存一个名为ExpressionNode()
的课程。
这个过程是:<HOLDS Array>
method1()
调用<Create Array>``method2()
,而不是<ExpressionNode()-Info>
method3()
,它会以递归方式运行。
我的问题是method3()
以递归方式运行,当它运行时我希望将信息存储在ExpressionNode()
中并将其推送到method2()
但是由于它覆盖了它不会发生每次再打电话给那个信息。
我可以在班级中创建一个公共ArrayList
,但我想知道是否有更好的方法。
答案 0 :(得分:0)
谢谢你们,我想我明白了。
我做了什么:
private CompoundStatementNode compound_statement() {
CompoundStatementNode answer = new CompoundStatementNode();
answer.addAllArrayList(optional_statements());
return answer;
}
private ArrayList<StatementNode> optional_statements() {
ArrayList<StatementNode> answer = new ArrayList();
statement_list(answer);
return answer;
}
private ArrayList<StatementNode> statement_list(ArrayList<StatementNode> answer) {
answer.add(statement());
if (currentToken == PascalToken.SEMICOLON) {
match(PascalToken.SEMICOLON);
statement_list(answer);
}
return answer;
}