Рекурсивный вызов древовидной структуры с многослойным parent-child в Java - PullRequest
0 голосов
/ 30 октября 2018

Я взял на себя чей-то проект и натолкнулся на функцию, которая принимает условие и проверяет, есть ли у этого условия дочерние элементы. Если да, он проверит, являются ли дети объектами или другими условиями. Если это объект, он пойдет дальше и будет выполнять логику другим образом, если это условие, он продолжит проверку того, что находится под ним, и так далее .... Я знаю, что это слишком сложно, и я не могу объяснить больше, чем это, но я написал аналогичную логику для сценария.

В моем примере CondtionList расширяет класс Condition, и древовидная структура выглядит следующим образом

                        condition
                          /   \  
                     object    condition
                              /     |    \ 
                        object  condition object
                                 /     \ 
                               object  condition

Я пытаюсь сделать рекурсивный вызов многослойной древовидной структуры Condition. Он работает нормально, пока не доберется до возвращаемого значения, которое повторно вызывает мой рекурсив, прежде чем завершит выполнение этой функции.

Вот мой код:

private boolean[] isNumberEvenOrOdd(Condition condition){
    boolean isEven = false;
    boolean isOdd = false;
    boolean[] isNumberEvenOrOdd = new boolean[2];

    if(condition instanceOf ConditionList) {
        for(Condition child : ConditionList.getConditions()){
            if (child instanceOf ConditionList){
                isNumberEvenOrOdd(child);
            }
            else{
                if((Integer)child % 2 == 0) {
                    isEven = true;
                }
                else {
                    isOdd = true;
                }
            }
        }
    }

    isNumberEvenOrOdd[0] = isEven;
    isNumberEvenOrOdd[1] = isOdd;

    return isNumberEvenOrOdd;
}

Заранее спасибо за помощь.

...