我一直在編碼一個遞歸算法,以便通過不同的節點並分析有向非循環圖中的所有路徑。問題是,在將一些新數據引入算法後,我收到了此消息Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
。我已經通過關於這個問題的不同問題進行了研究,看來這個錯誤是因爲內存不足。任何人都可以幫我解決這個問題嗎?遞歸算法和StackOverFlow錯誤
這裏我想補充的遞歸算法的圖片:
public boolean checkduration(Node node, double dur, int freq){
boolean outcome=true;
currentPath.add(node);
if((dur>minduration)&&(node.getRep()<=node.getMaxRep())){
ArrayList<Node> clone = (ArrayList<Node>) currentPath.clone();
currentPath2=clone;
failingPaths.add(new ImmutableTriple<Double,Integer, ArrayList<Node>> (dur,freq,currentPath2));
currentPath.remove(node);
return false;
}
node.setRep(node.getRep()+1);
for(int i=0;i<node.getEdge().size();i++){
if(!checkduration(node.getEdge().get(i).previousNode,dur+node.getEdge().get(i).timeRelation, freq+node.getEdge().get(i).frequency)){
outcome=false;
}
}
currentPath.remove(node);
node.setRep(node.getRep()-1);
return outcome;
}
的錯誤似乎是在(if(!checkduration(node.getEdge().get(i).previousNode,dur+node.getEdge().get(i).timeRelation, freq+node.getEdge().get(i).frequency)))
的條件,但我不明白爲什麼它的工作原理與某些數據並不總是沒有那麼多的信息已經變了。
任何意見,建議將是真正有用的。謝謝大家