gpt4 book ai didi

Java递归函数失败

转载 作者:行者123 更新时间:2023-12-01 23:15:29 24 4
gpt4 key购买 nike

我的职能是:

private void addEdges(mxICell mainObject, List<Object> edgesList) {
if (mainObject.getEdgeCount() > 0) {
// for (int i = 0; i < mainObject.getEdgeCount(); i++) {
edgesList.add(mainObject.getEdgeAt(0));
addEdges(((Line) mainObject.getEdgeAt(0)).getSource(), edgesList);
}
// }
else
return;
}

开始更新函数调用在这里:

for (Object obj : map.values()) {
if (obj instanceof Port
&& ((Port) obj).getParent().getStyle().equals("POWER")) {

String Feeder = ((Port) obj).getParent().getValue()
.toString();

List<Object> edgesList = new ArrayList<Object>();

Port p = (Port) obj;

mxICell mainObject = p;

addEdges(mainObject, edgesList);
//staff
}}

结束更新它给了我一个

 Exception occurred during event dispatching:
java.lang.StackOverflowError

最佳答案

这是因为一旦 mainObject 的边计数大于零,函数就会一遍又一遍地调用自身,从而导致 stackoverflow 异常。您需要定义适当的终止条件。

您的数据结构中很可能有一个圆圈。

例如:

mainObject1.getEdgeAt(0).source == mainObject2
mainObject2.getEdgeAt(0).source == mainObject1

或者类似的东西。事实上,你的递归调用永远不会终止。

关于Java递归函数失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21282024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com