以递归方法保存数据

时间:2014-04-27 04:42:44

标签: java recursion

我有一个关于在递归调用方法时保存数据的可能方法的问题。 我想在ArrayList中保存一个名为ExpressionNode()的课程。

这个过程是:<HOLDS Array> method1()调用<Create Array>``method2(),而不是<ExpressionNode()-Info> method3(),它会以递归方式运行。

我的问题是method3()以递归方式运行,当它运行时我希望将信息存储在ExpressionNode()中并将其推送到method2()但是由于它覆盖了它不会发生每次再打电话给那个信息。

我可以在班级中创建一个公共ArrayList,但我想知道是否有更好的方法。

1 个答案:

答案 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;
}