我的代码中有一个堆栈溢出,我真的不知道是什么原因造成的。父级是固定数组,例如14。
protected:
int* parent = new int[14];
int size = 14;
int Tree::level(int i) {
int count = 0;
for (int j = 0; j < size; j++) {
if (parent[i] == -1) {
count = 1;
} else {
count = level(i) + 1; //this is causing the stack Overlow
}
}
return count;
}
答案 0 :(得分:4)
由于i
在函数中未更改,因此后续调用中的递归调用必然会导致无限递归。
count = level(i) + 1;
我猜您打算在该呼叫中使用j
或parent[i]
而不是i
。在没有更多上下文的情况下,很难说出在递归调用中使用什么正确的值。
答案 1 :(得分:0)
在条件parent[i] == -1
为假的情况下,函数“级别”将变为无限递归,从而导致堆栈溢出。