gpt4 book ai didi

java 堆栈溢出错误

转载 作者:行者123 更新时间:2023-12-01 07:42:41 25 4
gpt4 key购买 nike

大家好,我正在为一门大学类(class)开发一个程序,该程序使用一种名为 get_line() 的方法来递归计算从网格上的一个点到另一个点的连续位置列表。当我运行它时,我在方法中最后一个 return 语句的行处出现堆栈溢出。我想知道是否可以让其他人检查一下该方法,看看是否有任何东西看起来完全错误。方法如下:

感谢您的帮助!

location是一个包含行r和列c的对象。

private Vector<location> get_line(location from, location to) {
location nextLoc = new location();
Vector<location> loc = new Vector<location>();
Random r = new Random();

if(to.r == from.r && to.c == from.c) {
return(loc);
} else {
if(to.r > from.r && to.c > from.c) {
nextLoc.r = from.r + 1;
nextLoc.c = from.c + 1;
} else if(to.r < from.r && to.c < from.c) {
nextLoc.r = from.r - 1;
nextLoc.c = from.c - 1;
} else if(to.r < from.r && to.c > from.c) {
nextLoc.r = from.r - 1;
nextLoc.c = from.c + 1;
} else if(to.r > from.r && to.c < from.c) {
nextLoc.r = from.r + 1;
nextLoc.c = from.c - 1;
} else if(to.r == from.r && to.c > from.c) {
if(r.nextInt(2) == 0) {
nextLoc.r = from.r + 1;
} else {
nextLoc.r = from.r - 1;
}
nextLoc.c = from.c + 1;
} else if(to.r == from.r && to.c < from.c) {
if(r.nextInt(2) == 0) {
nextLoc.r = from.r + 1;
} else {
nextLoc.r = from.r - 1;
}
nextLoc.c = from.c - 1;
} else if(to.r < from.r && to.c == from.c) {
nextLoc.r = from.r - 1;
if(r.nextInt(2) == 0) {
nextLoc.c = from.c + 1;
} else {
nextLoc.c = from.c - 1;
}
} else if(to.r > from.r && to.c == from.c) {
nextLoc.r = from.r + 1;
if(r.nextInt(2) == 0) {
nextLoc.c = from.c + 1;
} else {
nextLoc.c = from.c - 1;
}
}

loc.add(nextLoc);

return(get_line(nextLoc,to)); //stack overflow error occurs here.
}
}

最佳答案

这两个参数为 true 的条件是什么:

if(to.r == from.r && to.c == from.c)

在我的浏览中,nextloc 似乎总是被修改,因此上面的陈述永远不会成立。

关于java 堆栈溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1757653/

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