Рекурсивный вызов функции неожиданно зависает после достижения предела.
когда функция вызывается из main, корневой узел передается первым, и в цикле потомки корневого узла проверяются на значение размера, и рекурсивно эта же функция вызывается для этого потомка для установки значения размера.
мой ввод очень большое дерево. когда я печатаю n-арное дерево перед установкой размера элементов в дереве, список печатается со всеми элементами. но во время рекурсии setsize () выполнение зависает в определенной точке бессмысленно. каждый раз, когда выполнение останавливается на том же элементе. если я удаляю элементы после того элемента, где он висит, из моего ввода при создании n-арного дерева, выполнение будет успешным и не зависнет.
Я пытался увеличить -Xss -Xmx -Xss. все еще бесполезен.
Должен ли я использовать многопоточность или, пожалуйста, сообщите мне, если есть какие-либо проблемы в моем ниже рекурсивном методе для вышеописанной реализации функции. Thx !!
public void setsize(Element inEle){
for(int i =0;i<inEle.children.size();i++){
if(inEle.children.get(i).size==0)
{
this.setsize(inEle.children.get(i));
i--;
}else
{
if(!inEle.children.get(i).isRedefine)
inEle.size=inEle.size+inEle.children.get(i).size;
}
}
inEle.size=inEle.size*inEle.occurs;
}