递归堆栈溢出

时间:2019-04-02 03:21:37

标签: c++

我的代码中有一个堆栈溢出,我真的不知道是什么原因造成的。父级是固定数组,例如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;
}

2 个答案:

答案 0 :(得分:4)

由于i在函数中未更改,因此后续调用中的递归调用必然会导致无限递归。

count = level(i) + 1;

我猜您打算在该呼叫中使用jparent[i]而不是i。在没有更多上下文的情况下,很难说出在递归调用中使用什么正确的值。

答案 1 :(得分:0)

在条件parent[i] == -1为假的情况下,函数“级别”将变为无限递归,从而导致堆栈溢出。