嗨,大家好,我正在研究一個大學課程的程序,該程序使用名爲get_line()的方法來遞歸計算從網格上的一個點到另一個點的連續位置列表。當我運行它時,我在方法中最後一個return語句的行處發生堆棧溢出。我想知道是否有其他人可以查看方法,看看有沒有什麼看起來完全錯誤。該方法提供如下:java stackoverflow錯誤
謝謝你的幫助!
位置是包含行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.
}
}
你應該重申這一點,並添加作業標籤,只是爲了更多的預見。 – 2009-11-18 17:37:19
在Java中習慣使用以高級字符開頭的所有類名; 「我的位置」看起來更像是一個變量,而不是一個班級,直到我遇到心理錯位並回去仔細檢查。永遠不要低估會議的力量! – 2009-11-18 17:53:38
我不知道有一個家庭作業標籤,這對那些試圖回答編程問題的人有幫助嗎?此外,我的問題中的第一句話是「嗨,夥計們,我正在爲**大學課程**計劃」 – seventeen 2009-12-02 17:34:12